javascript - webpack + babel-loader 产生包含 `eval()` 的输出

标签 javascript node.js webpack babeljs

从表面上看,我遇到了与此相同的问题:Webpack Babel-loader transpiles code with eval()但此解决方案对我不起作用。

我尝试在 webpack.config.js 中同时使用 @babel/preset-envbabel-preset-env 预设> 文件。我也尝试(但失败了)使用 .babelrc 文件来实现这两种配置。是不是模块版本冲突问题?

如果我可以提供任何其他信息来使我的问题更清楚,请告诉我。

Node :v10.15.3npm:6.4.1

webpack.config.js

'use strict';

const path = require('path');

module.exports = {
    entry: {
        app: './src/js/scripts.js'
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'public/dist/js')
    },

    module: {
        rules: [
            {
                test: /\.js$/, // include .js files
                exclude: /node_modules/, // exclude any and all files in the node_modules folder
                use: [
                    {
                        loader: 'babel-loader',
                        options: {
                            presets: ['@babel/preset-env']
                        }
                    }
                ]
            }
        ]
    }
};

package.json

...
"devDependencies": {
        "@babel/core": "^7.7.4",
        "@babel/preset-env": "^7.7.4",
        "babel-loader": "^8.0.6",
...

(除了来自)生成的 bundle.js

/***/ }),

/***/ "./src/js/scripts.js":
/*!***************************!*\
  !*** ./src/js/scripts.js ***!
  \***************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _my_test__WEBPACK_IMPORTED_MODULE_0__ = __webpa .... ");

/***/ })

/******/ });

最佳答案

那是因为你处于开发模式。 尝试:

  1. 为 webpack 配置设置 devtool 为 'none'
  2. 将 webpack 配置的 mode 设置为 'production'

而且您不会看到评估。

可以使用 browserslist 格式查询字符串设置 UPD preset-env 浏览器选项:

  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": "ie 11, chrome 58, > 0.25%, not dead"
      }
    ]
  ]

或使用数组,但它将在下一个版本中删除

  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "browsers": ["chrome 58", "ie 10", "not dead"]
         }
      }
    ]
  ]

关于javascript - webpack + babel-loader 产生包含 `eval()` 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053103/

相关文章:

javascript - 使用 DES (Node.js) 将数据传递到 Cipher.update 时丢失数据

Javascript:如何在派生类中覆盖之前调用基类函数?

node.js - 使用 gulp 选择和移动目录及其文件

HTML 表单请求正文为空 - NodeJs

node.js - 使用 webpack 创建 npm 包

javascript - JS fetch,没有得到响应的标题

javascript - 如何确定是否有任何选择菜单已成为焦点?

javascript - 安装和使用特定 npm 包时遇到问题。我究竟做错了什么?

javascript - 意外的 token '<' React Webpack 构建

javascript - 无法找到 webpack 的构建文件夹