我想说我想在我的项目(或任何给定的npm包)中使用Immutable。我npm install
编辑了它,因此它位于node_modules
。当然,它有CommonJS出口。但是,我想在我的项目中使用es6模块。
我正在使用Webpack一起编译它,使用6to5-loader来处理es6模块语法。
在我的源文件中,我说import Immutable from 'immutable';
---但是这会导致问题,因为es6 import
正在寻找导出的es6 default
,这不是&#39 ;案例(对于Immutable或可能几乎任何其他npm包)。编译后的代码最终看起来像这样:var Immutable = require('immutable')["default"];
---当然会抛出错误,因为找不到default
属性。
我可以使用es6模块使用npm包吗?
答案 0 :(得分:30)
Babel.js贡献者。您正在寻找以下内容:
import * as Immutable from 'immutable';
// compiles to:
var Immutable = require('immutable');
注意:这是
common
或commonInterop
模块选项。对于其他人,请参阅:https://babeljs.io/docs/usage/modules/
答案 1 :(得分:0)
刚想通了。 (该解决方案是特定于工具的 - 但是es6模块现在只在工具启用的情况下才存在,因此我认为这足以解决问题"。
6to5的默认模块转换使用common
选项,这导致我上面提到的问题。但是还有另一种选择:commonInterop
---必须建立它来处理我正在处理的情况。见https://6to5.github.io/modules.html#common-interop
为6to5做了三次欢呼。