【问题标题】:Angular 2.2.0 component-relative path (SystemJS) module is not definedAngular 2.2.0 组件相对路径(SystemJS)模块未定义
【发布时间】:2017-04-05 14:40:59
【问题描述】:

我尝试这样的组件相关模板 URL

dialog.component.ts

@Component({
    moduleId: module.id,
    selector: 'modal-confirm',
    templateUrl: 'dialog.component.html',
    styleUrls:  ['dialog.component.css']
})

tsconfig.json

  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
     ....
  },

systemjs.config.js

typescriptOptions: {
  emitDecoratorMetadata: true,
  experimentalDecorators: true,
  module: "commonjs",
},

使用 JiT,我得到了

Error: (SystemJS) module is not defined
ReferenceError: module is not defined at eval (http://localhost:3000/app/shared/services/dialog.component.ts!transpiled:104:35)

点击链接进入这一行

moduleId: module.id,

我错过了什么?

更新 实际上,我收到的错误比上面提到的要多。在许多情况下,AoT 需要更严格的代码才能通过类型检查器。它比我预期的要复杂得多。在 JiT 模式下有效的东西可能在 AoT 模式下无效。我会再等 3-6 个月,看看 AoT 编译器如何改进。

【问题讨论】:

  • 你是用dist文件夹还是什么???
  • 是的,我正在使用 dist 文件夹。这对相对路径错误有影响吗?

标签: angular typescript angular2-template


【解决方案1】:

这里是解决方案

For systemjs, here I should use __moduleName instead of module.id

【讨论】:

    【解决方案2】:

    是的。

    如果您使用的是 dist 文件夹,请确保将所有需要的文件(例如 .css, .js)复制到与默认目录结构相同的 dist 文件夹(与运行 之前的目录结构相同) gulp/grunt 任务

    【讨论】:

    • 我将 html 和 css 复制到了相应结构的 dist 文件夹中。但仍然是同样的错误。如果我将 url 改回绝对路径,它工作正常。是不是相对路径 + moduleId 不适用于 JiT?
    • 在 github 中很少有可用的线程。请检查一下。他们可能会解决您的问题。一切都与正确的配置有关。如果你使用的是 webpack 或 system.js,配置会有所不同。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-11-29
    • 2016-07-10
    • 2016-04-05
    • 2017-02-19
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多