Systemjs寻找不存在的模块 - 如何取消注册?

时间:2016-03-14 04:47:43

标签: typescript angular systemjs

我正在通过Angular2 Tour of Heroes tutorial并且遇到了一个奇怪的障碍。我搞砸了,意外地找到了一个名为heroes.component.ts.js的文件。我知道这个文件不存在,因为我删除了它,但我一直收到404错误http://localhost:3000/app/heroes.component.ts.js 404 (Not Found)。我在浏览器和typescript编译器输出中看到它。

我尝试在系统初始化脚本块中使用System.delete函数无效:

<script>
    System.config({
        packages: {
            app: {
                format: 'register',
                defaultExtension: 'js'
            }
        }
    });
    System.delete('app/heroes.component.ts.js');
    System.import('app/main')
            .then(null, console.error.bind(console));
</script>

我正在使用chrome并且dev工具打开,所以我知道它没有在浏览器中缓存 - 我怎么告诉systemjs忘记heroes.compnent.ts.js或以其他方式摆脱这个烦人的错误?

3 个答案:

答案 0 :(得分:1)

使用您的配置,您可以按需加载模块,因此您的应用程序中仍然必须具有类似的功能:

import {...} from 'app/heroes.component.ts';

import {...} from './heroes.component.ts';

js后缀会自动添加到SystemJS中带有app开头的软件包的模块名称中

删除导入应解决您的问题。

答案 1 :(得分:1)

检查main.ts并在其他文件中搜索heroes.component.ts字符串。 在我的情况下,当我将app.component.ts重命名为heroes.component.ts时,我的编辑器(WebStorm)也改变了在main.ts中导入AppComponent的路径

答案 2 :(得分:0)

您是否尝试System.delete('app/heroes.component.js');或尝试完整路径。

https://github.com/devslopes/angular2-skeleton/blob/master/node_modules/systemjs/docs/system-api.md

第二个你在某处导入了这样的东西吗?那也可能是错误。

import {{xx}} from 'app/heroes.component.ts.js';

OR

import {{xx}} from 'app/heroes.component.ts';