0

angular 2 プロジェクトを AoT でコンパイルしようとしています。しかし、私は次の問題を抱えています。

ソースコードは次のとおりです。

/// <reference path="../../typings/index.d.ts" />
import { Injectable, Inject } from '@angular/core';
import { Http } from '@angular/http';
import { AppConfig, APP_CONFIG } from '../app.config';
import 'rxjs/add/operator/toPromise';
import * as bluebird from 'bluebird';

@Injectable()
export class EventsAPIService {
    private ECI_END_POINT: string;

    constructor(private http: Http, @Inject(APP_CONFIG) config: AppConfig) {
        this.ECI_END_POINT = config.ECI_END_POINT;
    }

    getEvents() {
        console.log(typeof bluebird, bluebird);
        return new bluebird((resolve: any, reject: any) => {
            this.http.get(`${this.ECI_END_POINT}/events/all`).toPromise().then((res: any) => {
                resolve(res.json().data);
            }).catch((err: Error) => {
                console.error(err);
                reject(err);
            });
        });
    }
}

rollup.config.js

import rollup      from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs    from 'rollup-plugin-commonjs';
import uglify      from 'rollup-plugin-uglify'
//paths are relative to the execution path
export default {
  entry: 'dist/src/main.js',
  dest: 'www/scripts/main.js', // output a single application bundle
  sourceMap: true,
  sourceMapFile: 'www/scripts/app.min.js.map',
  format: 'umd',
  moduleName: 'ECIAPP',
  plugins: [
    nodeResolve({jsnext: true, main: true, module: true}),
    commonjs({
      include: ['node_modules/rxjs/**']
    }),
    // uglify()
  ]
}

NGC を使用してプロジェクトをコンパイルしてからロールアップすることはできますが、ロールアップによって bluebird モジュールが {..., default: 'actual bluebird'} に変換されるため、getEvents が呼び出されるとエラーがスローされます。

誰でも助けてもらえますか?

4

1 に答える 1

1

allowSyntheticDefaultImports: true で tsconfig.json 修正

于 2016-11-14T00:34:53.400 に答える