Rollup和Redux:" index.js不会导出默认值"

时间:2016-10-02 18:49:44

标签: angular typescript redux ionic2 rollupjs

我已将我的离子应用从beta 11更新为rc0。所以这意味着我已经从angular2 rc4切换到angular2 stable,从typescript 1.8切换到2并使用rollupjs模块捆绑器。

我有一个redux架构,正在使用Redux库。

我无法编译并收到此错误:

  

错误:模块   c:\ XXX \ node_modules \ redux \ node_modules \ symbol-observable \ index.js   不导出默认值(导入   C:\ XXX \ node_modules \终极版\ 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']
    })
  ]

};

1 个答案:

答案 0 :(得分: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,所以希望它只是重新配置它的情况。目前,只有rxjsfirebaseangularfire2内的模块正在转换。

通常最好只包含所有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(...)

不在 CommonJS中的node_modules内的任何文件都将保持不变的插件。