我遵循了Angular 2快速入门指南,该指南运行良好。但我真的不喜欢他们使用的ts编译器,也不想在我的node_modules文件夹中不需要数十亿个依赖项。因此,我决定使用gulp从头开始构建我自己的angular 2项目,以便将我的打字稿代码编译/ uglifying / concatting到1个文件中。
现在,当我运行我的应用程序时,我看到“正在加载......”而不是“Hello world!”。
在我的控制台中,我收到以下错误:
获取http://localhost:3000/app/main.js 404(未找到)(zone.js:138)
错误:(SystemJS)XHR错误(404 Not Found)loading((索引):37)
我猜测我的SystemJS和/或打字稿的编译在这里出了问题。它正在寻找'main.js',即使我只有'main.ts'。
在快速入门指南中,由于已编译的打字稿,我的app文件夹中确实存在'main.js'。 但是因为我正在使用gulp,所有我编译的东西都进入一个单独的文件夹,有一个单独的名字,所以我没有'main.js'。
此时我在网上找不到任何解决方案,而且我已经开始错过Angular 1,所以任何帮助都会受到欢迎。
如果需要,我很乐意提供我的任何代码,但我的app文件夹systemjs.config.js和tsconfig.json与快速入门指南完全相同。
更新
这就是我的systemjs.config.js的样子,因为我希望问题出在哪里。它似乎在寻找.module和.component文件,但我只有1个文件:'app.min.js',其中包含所有代码。这是错的吗?
/**
* System configuration for Angular samples
* Adjust as necessary for your application needs.
*/
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
// our app is within the app folder
app: 'dist/app',
// angular bundles
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
'@angular/router/upgrade': 'npm:@angular/router/bundles/router-upgrade.umd.js',
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
'@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js',
'@angular/upgrade/static': 'npm:@angular/upgrade/bundles/upgrade-static.umd.js',
// other libraries
'rxjs': 'npm:rxjs',
'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: {
main: './app.min.js',
defaultExtension: 'js'
},
rxjs: {
defaultExtension: 'js'
}
}
});
})(this);
答案 0 :(得分:1)
您的问题不是需要使用angular cli重新创建项目...您的项目是说它无法找到您的main.js
文件或换句话说您的main.ts
文件。在angular 2中,你的编译器npm获取那些.ts文件并将它们转换为.js或javascript文件。所以你有错误
GET http://localhost:3000/app/main.js 404 (Not Found) (zone.js:138)
基本上是说它无法引用你的main.ts文件。你可以尝试的一些事情是
<script> System.import('app').catch(function(err){ console.error(err) }); </script>
需要注意的重要部分是('app')
部分。这是引用的文件路径,用于查找main.ts
3.确保('app')
实际上是指向您main.ts
的正确路径位置。要找到简单导航到您的systemjs.config.js文件并寻找类似的东西......
map: {
app: 'app/components',
只需将应用的路径更改为您为main.ts文件放置的位置。在这个例子中,我必须让我的main.ts位于我的组件文件夹下。
修改强>
好的,这是我的上一次编辑:
重要的是,如果您将.js文件拆分为另一个文件夹,那么您应该了解您的打字稿实际上并未编译,那么您需要指出的是app
路径定义。
我还想把它添加为一个注释。不要害怕npm和node_modules。角度2在实际部署项目时仅在开发中很笨重,角度会使你的项目变得非常合理,你可以在SO here上找到其他问题
答案 1 :(得分:0)
如果你想开始一个新项目,那么你应该做什么:
安装angular-cli
:
npm i -g angular-cli
创建一个新项目:
ng new yourNewProjectName --style=scss
(您可以删除scss或将其替换为&#34; less&#34;或&#34; sass&#34;。默认值:&#34; css&#34;)。
转到您的项目:
cd yourNewProjectName
启动项目:
ng serve
使用angular2快乐玩耍!