不,我不是在构建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
的支持。”defaultExtension
是packages
选项中定义的程序包的参数,因此必须定义一个程序包才能使用它。
考虑到您的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"
。