不,我不是在构建angular2应用程序。
我正在尝试SystemJS,这是我的脚本来加载我的模块

<script type="text/javascript">
    System.config({ baseURL: '/scripts/ts',
        map: { 'deck': 'deck'}, defaultJSExtensions: "js", defaultExtension: "js" });
    System.import('deck').then(function () {
            document.write("Loaded...");
        });
</script>


这是我收到的控制台消息。

system.src.js:sourcemap:80 Uncaught (in promise) Error: Unexpected identifier   Evaluating http://localhost:61968/scripts/ts/deck   Loading deck
    at eval (<anonymous>)
    at evaluate (system.src.js:sourcemap:2821)
    at system.src.js:sourcemap:3620
    at dynamicExecute (system.src.js:sourcemap:1144)
    at doEvaluate (system.src.js:sourcemap:1091)
    at ensureEvaluate (system.src.js:sourcemap:999)
    at system.src.js:sourcemap:617
    at <anonymous>


看来systemjs没有选择默认扩展名。我怎样才能解决这个问题?

最佳答案

从版本0.20.0开始不再支持defaultJSExtensions。您可以在release notes for 0.20.0-alpha1中看到它:“删除对defaultJSExtensions的支持。”

defaultExtensionpackages选项中定义的程序包的参数,因此必须定义一个程序包才能使用它。

考虑到您的map也不是必需的,那么您应该使用如下代码:

{
  baseURL: '/scripts/ts',
  packages: {
    // Yep, this defines a package with an empty name. This will
    // encompass everything not encompassed by a more specific package
    // name.
    "": {
      defaultExtension: "js"
    },
  },
}


实际上,这也可以:

{
  baseURL: '/scripts/ts',
  packages: {
    "": {},
  },
}


原因如下:添加扩展名没有全局默认值。但是,如果您定义了程序包但未为其指定defaultExtension,则程序包将自动为defaultExtension获取默认值,即"js"

09-25 17:13
查看更多