Webpack 2 的 Babel Transform 运行时问题

Api*_*oud 3 javascript ecmascript-6 webpack babeljs

下午好,

这与我在webpack 的 github上报告的问题相同,但我怀疑我可能做错了什么,因此在这里提出一个问题。

我正在尝试配置webpack 2Babel,要求之一是转译内置插件,例如Symbol.

尽管现在工作正常,但当我尝试使用 webpack 和 babel 的转换运行时时,我无法使用exports *.

输入文件(src/index.js):

export * from './secondFile'
Run Code Online (Sandbox Code Playgroud)

第二个文件.js:

export let TESTSYMBOL = Symbol('test');

export let TESTSYMBOL2 = Symbol('test2');
Run Code Online (Sandbox Code Playgroud)

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']
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

脚本

"webpack -d --config config/webpack.config.js"
Run Code Online (Sandbox Code Playgroud)

输出文件要点

例外

Uncaught ReferenceError: exports is not defined - at Object.defineProperty(exports, "__esModule", {
Run Code Online (Sandbox Code Playgroud)

开发依赖:

  • “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-stage-3”:“6.24.1”

依赖项: - “babel-runtime”:“6.23.0”

谢谢你的帮助!

Api*_*oud 5

看来问题出在include. 由于某种原因,我无法使用path.resolveor 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']

                    }
                }

        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

不管怎样,现在 存在一个问题exports not defined,可以通过在 es2015 预设中将 module 设置为 false 来解决(感谢 Github 上的 Vanuan 的建议):

presets: [['es2015', { modules: false }], 'stage-3'],
Run Code Online (Sandbox Code Playgroud)