ReferenceError:__moduleName 未定义 Angular 2

Posted

技术标签:

【中文标题】ReferenceError:__moduleName 未定义 Angular 2【英文标题】:ReferrenceError: __moduleName is not defined Angular 2 【发布时间】:2017-01-30 11:43:12 【问题描述】:

所以我发现了这个技巧,我们可以使用 __moduleName 以便 systemjs 能够知道我们当前的位置,而我们不需要指定整个文件夹路径。

组件

@Component(
    moduleId: __moduleName,
    selector: 'app-customer',
    templateUrl: 'customer.component.html'
)

app.d.ts

declare var __moduleName: any;

我已经将 __moduleName 声明为全局变量,但控制台仍然显示引用错误。有什么建议吗?

【问题讨论】:

同样的问题。附带说明一下,使用旧 angular2 演示中的 module.id 版本几乎可以工作,但它会继续在子组件中渲染父组件。 【参考方案1】:

这与您注册转译的格式有关。 'system' 注册 __moduleName 变量以使用模块的相对路径。这是节点模块(js 转译文件),而不是角度模块(节点模块包)。如果您使用“commonjs”格式,Node 还有一个默认值module.id。

您可以检查 tsconfig.json 的设置:


"compilerOptions": 
  ...
  "module": "amd | umd | system | commonjs | es6 | es2015 | none",
  ...

https://www.typescriptlang.org/docs/handbook/compiler-options.html

【讨论】:

以上是关于ReferenceError:__moduleName 未定义 Angular 2的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的 ReferenceError:未定义 ytcfg(也未定义 __ytRIL)

JavaScript ReferenceError: Can’t find variable: __doPostBack

Adobe Animate ReferenceError:错误#1069:在_上找不到属性loopMode,并且没有默认值

NativeScript 遇到致命错误:Uncaught ReferenceError: __UI_USE_EXTERNAL_RENDERER__ is not defined

开玩笑 - ReferenceError:未定义导入的函数

玩笑-ReferenceError:导入的函数未定义