JavaScript - babel-preset-env not transpiling arrow functions for IE11
我很难配置Babel来转换IE11可以理解的代码,特别是箭头功能。使用配置运行
与在此问题中引用的控制台输出不同,在我的文档中没有提及"使用目标"或"使用预设"。我不知道这与使用
这是我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | { // name, version etc. snipped "devDependencies": { "@babel/core":"^7.1.2", "@babel/plugin-transform-async-to-generator":"^7.1.0", "@babel/plugin-transform-es2015-arrow-functions":"^6.22.0", "@babel/plugin-transform-es2015-modules-commonjs":"^6.26.2", "@babel/preset-env":"^7.1.0", "ajv":"^6.5.4", "copy-webpack-plugin":"^4.5.2", "eslint-plugin-jest":"^21.24.1", "jest":"^23.6.0", "jest-dom":"^2.0.4", "webpack":"^4.20.2", "webpack-cli":"^3.1.2" }, "babel": { "presets": [ [ "@babel/preset-env", { "targets": { "ie":"11" } } ] ], "env": { "development": { "plugins": [ "transform-es2015-arrow-functions", "transform-es2015-modules-commonjs" ] }, "test": { "plugins": [ "transform-es2015-arrow-functions", "transform-es2015-modules-commonjs" ] } } } } |
我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | const CopyWebpackPlugin = require("copy-webpack-plugin"); const path = require("path"); module.exports = { entry:"./src/thing.js", optimization: { minimize: false }, output: { filename:"thing.js", path: path.resolve(__dirname,"dist") }, plugins: [ new CopyWebpackPlugin([ // snipped ]) ] }; |
从这里阅读有关Babel配置的其他问题,以及babel-preset-env文档以及非常笨拙的babel-plugin-transform-es2015-arrow-functions文档,我到达了这一点。这个非常相似的问题的答案(没有被接受的答案)根本没有提到该插件,有人建议使用polyfill,这似乎涉及在您的实际代码中而非当前阶段加载库?
我对使用Webpack刚起步很陌生,不了解
我究竟做错了什么?
Babel本身是一个转换库,但它本身不会集成到任何特定工具中。要将Babel与Webpack一起使用,您需要安装
1 2 3 4 5 6 7 8 9 10 11 | module: { rules: [ { test: /\.m?js$/, exclude: /node_modules/, use: { loader: 'babel-loader', } } ] } |
除了解决问题的loganfsmyth的答案外,我想指出的是,对于任何其他初学者,我都将Babel配置从
我还发现我需要的插件(例如我上面提到的
我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | module: { rules: [ { test: /\.m?js$/, exclude: /node_modules/, use: { loader:"babel-loader", options: { presets: ["@babel/preset-env"], plugins: [ require("@babel/plugin-transform-async-to-generator"), require("@babel/plugin-transform-arrow-functions"), require("@babel/plugin-transform-modules-commonjs") ] } } } ] } |
我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { "presets": [ [ "@babel/preset-env", { "targets": { "ie":"11" }, "useBuiltIns":"entry" } ] ], "plugins": [ "@babel/transform-async-to-generator", "@babel/transform-arrow-functions", "@babel/transform-modules-commonjs" ], "env": { "development": {}, "test": {}, "production": {} } } |
我有同样的问题。原来并不是我所有的代码都具有箭头功能,而是只有一个库。我进入了内置的包,并使用箭头函数(