入门Angular2 RC5与ng-bootstrap 404错误

时间:2016-08-22 12:43:33

标签: angular ng-bootstrap

我已经按照ng-bootstrap网站上的安装说明使用了Angular2的新git克隆,但是当NgbModule位于@NgModule的导入数组中时收到404错误。

错误的Screencap:404 Error loading @ng-bootstrap

步骤:

  1. 克隆Angular2的快速入门git repo github.com/angular/quickstart
  2. app.module.ts修改为以下内容:

    import { NgModule }      from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    
    import { AppComponent }  from './app.component';
    import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
    
    @NgModule({
      imports: [ NgbModule, BrowserModule ],
      declarations: [ AppComponent ],
      bootstrap: [ AppComponent ]
    })
    export class AppModule { }
    
  3. 确保已安装bootstrap@4.0.0-alpha.3,ng-bootstrap和angular2 RC5

  4. 将bootstrap .css和.js脚本标记添加到index.html
  5. npm start生成正在加载...页面,没有其他内容,可以在Web控制台中看到404错误
  6. 尝试通过node_module显式设置导入路径时也会发生同样的情况,例如。 import { NgbModule } from "../node_modules/@ng-bootstrap/ng-bootstrap";

    任何帮助表示感谢。

    更新1:

    将@ ng-bootstrap行添加到项目根文件 systemjs.config.js 。浏览器控制台中有类似的404错误。

    systemjs.config.js

    /**
     * System configuration for Angular 2 samples
     * Adjust as necessary for your application needs.
     */
    (function(global) {
    
      // map tells the System loader where to look for things
      var map = {
        'app':                        'app', // 'dist',
    
        '@ng-bootstrap':              'node_modules/@ng-bootstrap',
        '@angular':                   'node_modules/@angular',
        'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
        'rxjs':                       'node_modules/rxjs'
      };
    
      // packages tells the System loader how to load when no filename and/or no extension
      var packages = {
        'app':                        { main: 'main.js',  defaultExtension: 'js' },
        'rxjs':                       { defaultExtension: 'js' },
        'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
      };
    
      var ngPackageNames = [
        'common',
        'compiler',
        'core',
        'forms',
        'http',
        'platform-browser',
        'platform-browser-dynamic',
        'router',
        'router-deprecated',
        'upgrade'
      ];
    
      // Individual files (~300 requests):
      function packIndex(pkgName) {
        packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
      }
    
      // Bundled (~40 requests):
      function packUmd(pkgName) {
        packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
      }
    
      // Most environments should use UMD; some (Karma) need the individual index files
      var setPackageConfig = System.packageWithIndex ? packIndex : packUmd;
    
      // Add package entries for angular packages
      ngPackageNames.forEach(setPackageConfig);
    
      // No umd for router yet
      packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };
    
      var config = {
        map: map,
        packages: packages
      };
    
      System.config(config);
    
    })(this);
    

    更新2

    将index.js文件添加到 systemjs.config.js 中的软件包,并按照screencap here收到各个文件的错误:

    systemjs.config.js(摘录)

     //packages tells the System loader how to load when no filename and/or no extension
      var packages = {
        'app':                        { main: 'main.js',  defaultExtension: 'js' },
        'rxjs':                       { defaultExtension: 'js' },
        'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
        '@ng-bootstrap/ng-bootstrap': { main: 'index.js', defaultExtension: 'js' },
      };
    

2 个答案:

答案 0 :(得分:3)

找到解决方案。问题确实在于 systemjs.config.js 。按照说明,现在问题得到解决。感谢

How can I add bootstrap to Angular2 via system.js

答案 1 :(得分:1)

您似乎没有在systemjs配置中添加@ng-bootstrap的路径,

systemjs.config.js

中添加@ng-bootstrap的路径

希望这会有所帮助!!