【问题标题】:Webpack 5 "dependOn" and target: "es5" appear to be incompatibleWebpack 5 "dependOn" 和 target: "es5" 似乎不兼容
【发布时间】:2021-05-24 11:17:31
【问题描述】:

我无法让 Webpack 5 输出 es5 兼容代码,同时还使用“dependOn”入口参数。

我正在使用 Babel 转译我的代码,效果很好,但除非我将 webpack 目标设置为“es5”,否则 webpack 本身会输出不兼容的代码。

我正在使用入口参数“dependOn”,它的行为与目标:“web”的预期相同,但是一旦我将其更改为“es5”,我就会得到 “来自 Terser 的 main.build.js 中的错误”和 “意外的令牌:punc(:) [main.build.js:3,9]”。

删除“dependOn”参数允许它编译,但随后我将我的供应商库添加到每个条目中。

这是重现问题的最小 webpack 配置(注释掉目标:“es5”或dependOn:“供应商”修复它):

const path = require('path');

module.exports = {
    mode: "production",
    target: "es5",

    entry: {
        vendor: "./src/test.js",
        main: {
            dependOn: "vendor",
            import: ['./src/main.js']
        }
    },
    output: {
        filename: '[name].build.js',
        path: path.resolve(__dirname, 'dist')
    },

    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader'
                }
            }
        ]
    }
};

"test.js" 和 "main.js" 可以包含任何内容,如果它们只有一个 "console.log" 语句,构建仍然会失败。

我的包 devDependencies 包含以下内容: "@babel/core": "^7.14.3", "@babel/preset-env": "^7.14.2", "babel-loader": "^8.2.2", "webpack": "^5.37.1", "webpack-cli": "^4.7.0".

我的 .babelrc 包含 {"presets": ["@babel/preset-env"]}

【问题讨论】:

    标签: ecmascript-5 webpack-5


    【解决方案1】:

    这可以通过改变来解决

    target: "es5"
    

    target: ["web", "es5"]
    

    相关文档 (https://webpack.js.org/configuration/target/) 中没有明确提到对这两个目标的需求,因此希望这会对遇到相同问题的任何人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2021-09-07
      • 1970-01-01
      • 2015-09-24
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多