下午好,
这是我在WebPack的GitHub上报告的同一问题,但我怀疑我可能是做错事的人,因此在此处打开一个问题。
我正在尝试使用使用 babel 配置,其中一个要求之一是将诸如 Symbol
的内置式内置。
尽管现在工作正常,但是当我尝试使用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依赖项:
- " webpack":" 2.6.1",
- " webpack-dev-server":" 2.4.5",
- " webpack-notifier":" 1.5.0"
- " babel-cli":" 6.24.1",
- " babel-loader":" 7.0.0",
- " babel-plugin-transform-runtime":" 6.23.0",
- " babel-preset-es2015":" 6.24.1",
- " babel-preset阶段3":" 6.24.1"
依赖项: - " babel-runtime":" 6.23.0"
感谢您的任何帮助!
似乎问题是include
。由于某种原因,我无法使用path.resolve
或path.join
。WebPack文档具有这样的示例。
如果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,fallub at Github的建议(:
presets: [['es2015', { modules: false }], 'stage-3'],
对于IE或较早的浏览器,我需要使用 es -shims - 将Ecmascript Specs的库转移到传统JS引擎中。
如果添加为index.html(或等效(上的第一个导入,则可以解决您的问题。例如:
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>
请参阅您可能需要的每个LIB的链接:ES-Shims