下午好,
这是我在webpack's github报道的同一个问题,但我怀疑我可能是那个做错事的人,因此在这里提出一个问题。
我尝试使用 Babel 配置 webpack 2 ,其中一个要求是转换内置插件,例如Symbol
。< / p>
尽管现在工作正常,但当我尝试使用webpack和babel的转换运行时,我无法使用exports *
。
输入文件(src / index.js):
export * from './secondFile'
secondFile.js:
export let TESTSYMBOL = Symbol('test');
export let TESTSYMBOL2 = Symbol('test2');
webpack.config.js (仅复制相关部分):
module: {
rules: [
{
test: /\.jsx?$/,
// Skip any files outside of `src` directory
include:path.resolve(__dirname, 'src'),
use: {
loader: 'babel-loader',
options: {
presets: ["es2015", "stage-3"],
plugins: ['transform-runtime']
}
}
}
]
}
脚本:
"webpack -d --config config/webpack.config.js"
输出文件:gist
异常:
Uncaught ReferenceError: exports is not defined - at Object.defineProperty(exports, "__esModule", {
Dev Dependencies:
依赖关系: - &#34; babel-runtime&#34;:&#34; 6.23.0&#34;
感谢您的帮助!
答案 0 :(得分:3)
似乎问题出在include
上。出于某种原因,我无法使用path.resolve
或path.join
。 webpack documentation就是这样的例子。
如果webconfig如下所示,它可以正常工作:
module: {
rules: [
{
test: /\.js$/,
include: [
/src/
],
// or exclude: [/node_modules/],
use:
{
loader: 'babel-loader',
options: {
plugins: ['transform-runtime'],
presets: ['es2015', 'stage-3']
}
}
}
]
}
无论哪种方式,现在exports not defined
存在问题,可以通过在es2015预设中将模块设置为false来解决(感谢Github上的Vanuan提供的建议):
presets: [['es2015', { modules: false }], 'stage-3'],
答案 1 :(得分:0)
对于IE或旧版浏览器,我需要使用 es-shims - 将ECMAScript规范移植到旧版JS引擎的库。
如果将这些库添加为index.html上的第一个导入(或等效的),则下面的这些库可能会解决您的问题。例如:
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>
查看您可能需要的每个lib的此链接:
util.promisify