Skip to content

ES6 module with no exports is not found with --js_module_root #2247

Closed
@alexeagle

Description

@alexeagle

Repro:

$ npm install [email protected]
$ cat user.js
import 'rxjs/add_first';

$ cat stripme/rxjs/add_first.js
import { Observable } from './Observable';
import { first } from './operator_first';
Observable.prototype.first = (first);

$ cat stripme/rxjs/operator_first.js
export function first() {}

$ cat stripme/rxjs/Observable.js
export class Observable {}

$ java -jar node_modules/google-closure-compiler/compiler.jar user.js stripme/rxjs/*.js --entry_point=user.js --js_module_root=stripme
user.js:1: ERROR - required "module$rxjs$add_first" namespace never provided
import 'rxjs/add_first';
^^^^^^^^^^^^^^^^^^^^^^^^

1 error(s), 0 warning(s)

It could be worked around in these ways:

  1. add a trivial export to stripme/rxjs/add_first:
$ cat >> stripme/rxjs/add_first.js
export var a;

$ java -jar node_modules/google-closure-compiler/compiler.jar user.js stripme/rxjs/*.js --entry_point=user.js --js_module_root=stripme
var module$rxjs$Observable={},Observable$$module$rxjs$Observable=function(){};module$rxjs$Observable.Observable=Observable$$module$rxjs$Observable;var module$rxjs$operator_first={};function first$$module$rxjs$operator_first(){}module$rxjs$operator_first.first=first$$module$rxjs$operator_first;var module$rxjs$add_first={};Observable$$module$rxjs$Observable.prototype.first=module$rxjs$operator_first.first;var a$$module$rxjs$add_first;module$rxjs$add_first.a=a$$module$rxjs$add_first;
  1. move the rxjs directory out of stripme/ and remove the --js_module_root argument.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions