2016-10-03 51 views
1

我最近更新我的Ionic2项目从2.0.0-beta.112.0.0-rc.0。我使用Immutable.js(版本^ 3.8.1)。由于更新我遇到离子在下面的错误即成命令:immutable.js不导出地图

[16:50:23] bundle dev started ... 
[16:50:40] Error: Module /myproject/node_modules/immutable/dist/immutable.js does not export Map (imported by /myproject/.tmp/effects/catalog.effects.js) 
at Module.trace (/myproject/node_modules/rollup/dist/rollup.js:7677:29) 
at ModuleScope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:7300:22) 
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39) 
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39) 
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39) 
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39) 
at CallExpression.bind (/myproject/node_modules/rollup/dist/rollup.js:5826:28) 
at /myproject/node_modules/rollup/dist/rollup.js:5151:50 
at ReturnStatement.eachChild (/myproject/node_modules/rollup/dist/rollup.js:5168:5) 
at ReturnStatement.bind (/myproject/node_modules/rollup/dist/rollup.js:5151:7) 

我不知道我是否需要添加一些纳入我app.module.ts文件。我可能会错过什么。

谢谢。

+0

请参阅[https://github.com/driftyco/ionic-app-scripts/issues/68](https://github.com/driftyco/ionic-app-scripts/issues/68) –

+0

看来,是问题。喔! –

回答

2

不知道更多关于你的项目和设置很难确切地知道什么样的问题和解决方案是,该错误信息......

Error: Module /myproject/node_modules/immutable/dist/immutable.js does not export Map

...给我们提供了线索。 That file是一个UMD模块,默认情况下,Rollup仅理解JavaScript模块(使用import/export声明)。我们可以使用rollup-plugin-commonjs来转换它,但在这种情况下,需要额外的步骤,因为Rollup无法知道Immutable具有名为Map的导出而没有实际运行代码。 (在某些情况下,要解决问题 - 当一个模块,例如exports.foo = bar它会添加一个名为foo出口,但不可改变做不同的事情。)

因此,我们帮助它通过使用汇总 - 插件namedExports选项-commonjs:

plugins: [ 
    commonjs({ 
    include: 'node_modules/**', 
    namedExports: { 
     'node_modules/immutable/dist/immutable.js': [ 'Map', 'Set', ... ] 
    } 
    }), 
    ... 
] 

这是不幸的,但必要的,因为的CommonJS的模块的语义是从根本上ES模块的不同。

+0

对于这个第一个答案,如果我的问题不够详细,对不起。为了更清楚,我目前正在开发一个Ionic2/Angular2/RxJS/Immutable.js手机应用程序。我使用以下语法从'immutable';'import import {Map}将Immutable包含到我的js文件中。在将Ionic for beta.11升级到rc.0之前,此包含效果良好。但是由于升级导入在一个文件中失败,而不是在所有文件中(在'NgModule'文件中工作)。离子使用'rollup','rollup-plugin-commonjs','rollup-plugin-node-resolve'和'rollup-pluginutils'。我希望它可以帮助 –