从表面上看,我遇到了与此相同的问题:Webpack Babel-loader transpiles code with eval()但此解决方案对我不起作用。
我尝试在 webpack.config.js
中同时使用 @babel/preset-env
和 babel-preset-env
预设> 文件。我也尝试(但失败了)使用 .babelrc
文件来实现这两种配置。是不是模块版本冲突问题?
如果我可以提供任何其他信息来使我的问题更清楚,请告诉我。
Node :v10.15.3
,npm: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 .... ");
/***/ })
/******/ });
最佳答案
那是因为你处于开发模式。 尝试:
- 为 webpack 配置设置
devtool
为 'none' - 将 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/