2

イオン アプリをベータ 11 から rc0 に更新しました。つまり、angular2 rc4 から angular2 安定版に、typescript 1.8 から 2 に、rollupjs モジュール バンドラーを使用して切り替えたことを意味します。

Redux アーキテクチャがあり、Redux ライブラリを使用しています。

コンパイルできず、次のエラーが発生します。

エラー: モジュール c:\XXX\node_modules\redux\node_modules\symbol-observable\index.js はデフォルトをエクスポートしません (c:\XXX\node_modules\redux\es\createStore.js によってインポートされます)

Module.trace で (c:\XXX\node_modules\rollup\dist\rollup.js:7677:29)

ModuleScope.findDeclaration で (c:\XXX\node_modules\rollup\dist\rollup.js:7300:22)

Scope.findDeclaration で (c:\XXX\node_modules\rollup\dist\rollup.js:5351:39)

Scope.findDeclaration で (c:\XXX\node_modules\rollup\dist\rollup.js:5351:39)

Identifier.bind (c:\XXX\node_modules\rollup\dist\rollup.js:6489:29)

c:\XXX\node_modules\rollup\dist\rollup.js:5151:50

MemberExpression.eachChild で (c:\XXX\node_modules\rollup\dist\rollup.js:5168:5)

MemberExpression.bind (c:\XXX\node_modules\rollup\dist\rollup.js:5151:7)

MemberExpression.bind (c:\XXX\node_modules\rollup\dist\rollup.js:6693:24)

c:\XXX\node_modules\rollup\dist\rollup.js:5151:50

誰が何が起こっているのかについて何か考えがありますか? 誰かが私にいくつかの指針を与えることができますか? これに対処する方法がよくわかりません。

これは私がrollup.config.jsに持っているものです

var ngTemplate = require('../dist/plugins/ng-template').ngTemplate;
var nodeResolve = require('rollup-plugin-node-resolve');
var commonjs = require('rollup-plugin-commonjs');

// https://github.com/rollup/rollup/wiki/JavaScript-API

module.exports = {
  /**
   * entry: The bundle's starting point. This file will
   * be included, along with the minimum necessary code
   * from its dependencies
   */
  entry: './.tmp/app/main.dev.js',

  /**
   * sourceMap: If true, a separate sourcemap file will
   * be created.
   */
  sourceMap: true,

  /**
   * format: The format of the generated bundle
   */
  format: 'iife',

  /**
   * dest: the output filename for the bundle in the buildDir
   */
  dest: 'main.js',

  // Add this to avoid Eval errors
  useStrict: false,

  /**
   * plugins: Array of plugin objects, or a single plugin object.
   * See https://github.com/rollup/rollup/wiki/Plugins for more info.
   */
  plugins: [
    ngTemplate(),
    commonjs({
        include: [
        'node_modules/rxjs/**',
        'node_modules/firebase/**',
        'node_modules/angularfire2/**'
        ],
        namedExports: {
        'node_modules/firebase/firebase.js': ['initializeApp', 'auth', 'database'],
        'node_modules/angularfire2/node_modules/firebase/firebase-browser.js': ['initializeApp', 'auth', 'database']
        }
    }),
    nodeResolve({
      module: true,
      jsnext: true,
      main: true,
      browser: true,
      extensions: ['.js']
    })
  ]

};
4

1 に答える 1

3

エラーの最初の部分...

エラー: モジュール c:\XXX\node_modules\redux\node_modules\symbol-observable\index.js はデフォルトをエクスポートしません

...ステートメントsymbol-observable\index.jsがないことを示します。export defaultこれは CommonJS モジュールであるためです。その内容全体は次のとおりです。

module.exports = require('./lib/index');

そのため、それを CommonJS から ES に変換する必要があります。すでに rollup-plugin-commonjs がセットアップされているので、うまくいけばそれを再構成するだけです。現在、 と 内のモジュールのみrxjsfirebase変換angularfire2されています。

通常はnode_modules、次のような依存関係の依存関係を手動で含める必要がないため、すべての を含めることをお勧めしますsymbol-observable

plugins: [
ngTemplate(),
commonjs({
  include: [
    'node_modules/**'
  ],
  namedExports: {
    'node_modules/firebase/firebase.js': ['initializeApp', 'auth', 'database'],
    'node_modules/angularfire2/node_modules/firebase/firebase-browser.js': ['initializeApp', 'auth', 'database']
  }
}),
nodeResolve(...)

node_modulesCommonJSではない内部のファイルは、変更されずにプラグインを通過します。

于 2016-10-03T12:46:36.793 に答える