无法让Angular2 + gulp项目工作

时间:2016-11-21 14:14:35

标签: angular installation dependencies

我遵循了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);

2 个答案:

答案 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文件。你可以尝试的一些事情是

  1. 您的main.ts文件是否实际位于您的app文件夹中?根据您的项目认为需要的错误。
  2. 启动应用程序时index.html正在寻找什么?例如,你应该有一个看起来像这样的脚本......
  3. <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

转到http://localhost:4200

使用angular2快乐玩耍!