main.js未从http://localhost:6541/app/main.js加载,搜索到http://localhost:6541/Home/app/main.js,我收到404。
所以我有systemjs.config.js:
(function (global) {
var map = {
'app': 'app',
'@angular': 'lib/@angular',
'rxjs': 'lib/rxjs'
};
var packages = {
'app': { main: './main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js'}
};
var ngPackegeNames = [
'common',
'compiler',
'core',
'http',
'platform-browser',
'platform-browser-dynamic',
'router',
'router-deprecated',
'upgrade'
];
ngPackegeNames.forEach(function (pkgName) {
packages['@angular/' + pkgName] = {
main: pkgName + '.umd.js',
defaultExtension: 'js'
};
});
var config = {
map: map,
packages: packages
};
System.config(config);
})(this);
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es6", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"rootDir": "app",
"outDir": "wwwroot/app"
},
"compileOnSave": true,
"exclude": ["node_modules","wwwroot/lib"]
}
我在布局中的:
<script src="~/lib/core-js/client/shim.min.js"></script>
<script src="~/lib/zone.js/dist/zone.js"></script>
<script src="~/lib/reflect-metadata/Reflect.js"></script>
<script src="~/lib/systemjs/dist/system.src.js"></script>
<script src="~/js/systemjs.config.js"></script>
<script>
System.import('app').catch(function (err) { console.error(err); });
</script>
在renderBody html文件中:
<my-app> Loading AppComponent content here ...</my-app>
来自Angular 2 Quickstart 404 GET /app/main.js的任何内容均无效。
答案 0 :(得分:1)
我相信您遇到的问题是MVC框架路由的结果。由于您使用的.cshtml
文件位于Home Controller中,因此路由将从主控制器(http://localhost:6541/Home
)的基础开始。
您需要使用systemjs.config.js
字符更新wwwroot
备份到..
文件夹的基础,如下所示:
(function (global) {
var map = {
'app': '../app',
'@angular': '../lib/@angular',
'rxjs': '../lib/rxjs'
};
var packages = {
'app': { main: './main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js'}
};
var ngPackegeNames = [
'common',
'compiler',
'core',
'http',
'platform-browser',
'platform-browser-dynamic',
'router',
'router-deprecated',
'upgrade'
];
ngPackegeNames.forEach(function (pkgName) {
packages['@angular/' + pkgName] = {
main: pkgName + '.umd.js',
defaultExtension: 'js'
};
});
var config = {
map: map,
packages: packages
};
System.config(config);
})(this);
作为替代方案,由于angular是一个SPA而你不会做很多MVC路由,因此将TypeScript编译到wwwroot文件夹下的Home文件夹可能是有意义的。这样,您就不必对systemjs.config.js
文件进行任何更改,并且对应用的引用也能正常运行。为此,请修改tsconfig.json
,如下所示:
"outDir": "wwwroot/Home/app"