WebPack 2的Babel变换运行时问题



下午好,

这是我在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.resolvepath.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

最新更新