Невозможно импортировать ng-bootstrap через systemjs

Вот моя задача:

  1. Загрузка @ ng-bootstrap / ng-bootstrap с помощью npm install --save @ ng-bootstrap / ng-bootstrap
  2. Loadig @ ng-bootstrap / ng-bootstrap через systemjs (я вижу ng-bootstrap.js в Safari среди загруженных ресурсов!), Я также пробовал несколько комбинаций с тем же результатом.
  3. Импорт в основной модуль: импорт {NgbModule} из '@ ng-bootstrap / ng-bootstrap';
  4. Вызов NgbModule.forRoot () в импорте части основного модуля

Ошибка: undefined не является объектом (оценка ng_bootstrap_1.NgbModule.forRoot)

Я пробовал console.log (NgbModule.forRoot) и получил undefined сразу после импорта.

systemjs:

    (function(global) {


    var map = {
        app: 'app',
        '@angular' : 'lib/@angular',
        'rxjs': 'lib/rxjs',
        '@ng-bootstrap/ng-bootstrap': 'https://npmcdn.com/@ng-bootstrap/ng-bootstrap'
        };


    var packages  = {
        app: {
            main: './bootstrap.js',
            defaultExtension: 'js'
        },
        rxjs: {
            defaultExtension: 'js'
        },
        '@ng-bootstrap/ng-bootstrap': {
            main: './bundles/ng-bootstrap.js',
            defaultExtension: 'js'
        }
    };


    var ngPackageNames= [
        'common',
        'compiler',
        'core',
        'forms',
        'http',
        'router',
        'platform-browser',
        'platform-browser-dynamic'
    ];

    ngPackageNames.forEach(function(pkgName) {
        packages['@angular/' + pkgName] = {main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js'};

    });

    System.config({
        defaultJSExtension: true,
        transpiler: null, 
        packages: packages,
        map: map
    });


}) (this);

app.module.ts:

    import { NgModule }       from '@angular/core';
    import { BrowserModule }  from '@angular/platform-browser';
    import { FormsModule }    from '@angular/forms';
    import { RouterModule }   from '@angular/router';
    import { HttpModule, RequestOptions } from '@angular/http';
    import { LocationStrategy, HashLocationStrategy } from '@angular/common';
    import { NgbModule }      from '@ng-bootstrap/ng-bootstrap';

    import { AppComponent }       from './app.component';
    import { AppRoutes }       from './app.routes';

    import { HomeModule } from './home/home.module';
    import { AuthenticationService } from './authentication/authentication.service';
    import { AuthenticationModule } from './authentication/authentication.module';
    import { ArticlesModule } from './articles/articles.module';


    @NgModule({
      imports: [
        BrowserModule,
        HttpModule,
        FormsModule,
        AuthenticationModule,
        ArticlesModule,
        HomeModule,
        RouterModule.forRoot(AppRoutes),
        NgbModule.forRoot()
      ],
      declarations: [
        AppComponent
      ],
      providers: [
        AuthenticationService
      ],
      bootstrap: [AppComponent]
    })



    export class AppModule { }

 tsconfig: 

    {
    "compilerOptions": {
        "target": "es6",
        "module": "system",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false
    },
    "exclude": [
        "node_modules"
    ]
}

person David Zencak    schedule 19.07.2017    source источник
comment
Вы можете сравнить нашу конфигурацию SystemJS (отметьте config.js) с образцом плункера для вдохновения: plnkr.co/edit / rTLxl5yeJ5RCgsEfLzoz? p = предварительный просмотр   -  person pkozlowski.opensource    schedule 19.07.2017
comment
Трудно точно увидеть, что происходит, не имея доступа к коду. Может быть, попытаться изменить плункер, который я связал, чтобы воспроизвести проблему?   -  person pkozlowski.opensource    schedule 19.07.2017
comment
Спасибо за плункер, мне он, к сожалению, не помог. Я скопировал карту из systemjs, а также импорт в модуль ... тот же результат. Должно быть что-то между systemjs и отсутствующим импортом. Я вижу загруженный скрипт в списке ресурсов веб-браузера, но по какой-то причине импорт в модуль не работает ...   -  person David Zencak    schedule 20.07.2017
comment
Я все еще застрял здесь. Если я помещаю console.log (NgbModule) после импорта, я получаю значение undefined, поэтому модуль не загружается должным образом. С другой стороны, если я помещаю console.log («загрузка тестового модуля») в модуль, текст печатается, поэтому systemjs работает хорошо. Что-то должно быть с компилятором машинописного текста ...   -  person David Zencak    schedule 29.07.2017


Ответы (1)


Я застрял с той же проблемой.

Для меня оказывается, что проблема существует только при компиляции с es2015 в качестве цели. Я сменил его на es5, и он работает. Может быть, это поможет вам в качестве быстрого решения проблемы.

"target": "es5",
    "module": "commonjs",
    "declaration": false,
    "removeComments": true,
    "noLib": false,
    "lib": [
      "es2016",
      "dom"
    ],

Ntl. похоже, проблема в том, как @ ng-bootstrap используется с SystemJS.

person Patrick P.    schedule 29.07.2017