假设我想在我的项目中使用Immutable(或任何其他npm包)。我已经通过npm安装了它,因此它在node_modules中。当然,在那里它有CommonJS导出。但是,我想在我的项目中使用es6模块。
我正在使用Webpack将所有内容编译在一起,并使用6to5-loader处理es6模块语法。
在我的源文件中,我说import Immutable from 'immutable'; --- 但这会引起问题,因为es6 import正在寻找已导出的es6 default,而这并不是Immutable(或可能几乎任何其他npm包)的情况。编译后的代码最终看起来像这样:var Immutable = require('immutable')["default"]; --- 这当然会抛出错误,因为不存在要查找的默认属性。
我能用es6模块消耗npm包吗?
我正在使用Webpack将所有内容编译在一起,并使用6to5-loader处理es6模块语法。
在我的源文件中,我说import Immutable from 'immutable'; --- 但这会引起问题,因为es6 import正在寻找已导出的es6 default,而这并不是Immutable(或可能几乎任何其他npm包)的情况。编译后的代码最终看起来像这样:var Immutable = require('immutable')["default"]; --- 这当然会抛出错误,因为不存在要查找的默认属性。
我能用es6模块消耗npm包吗?
import * as Immutable
语法,而不是使用我描述的commonInterop
和import Immutable
语法吗?import * as Immutable
语法是最终“真正的东西”中将起作用的语法吗? - davidtheclarkcommonInterop
很可能会成为默认选项。我仍然建议这样编写,因为在你的依赖项以es6编写之前,按照规范写成import * as
是更正确的方式。 - James Kyle