gulp - 使用 babel-polyfill 在 IE11 中未定义 Promise
问题描述
正如标题所说,即使我想使用 babel-polyfill 来允许我在我的代码中使用 Promise,但我在 IE11 中遇到了未定义的错误。
我已经尝试了一段时间,因为我已经看到在不同的网站上被问过几次,但是没有一个解决方案真的对我有用(或者更准确地说,我可能无法适应它们我的代码)
这些是我认为涉及的文件:
.babelrc
{
"presets": [
"es2015",
"react"
]
}
package.json:我在 dev-dependencies 下有 babel-polyfill 并试图将它放在依赖项下(都只是通过控制台手动交换和安装它),但似乎没有一个工作
我的 script.js 没有它作为导入(但是如果我尝试导入 @babel-polyfill,或者当我在 package.json 中看到该语法时使用正斜杠的不同组合,则找不到该模块)
最后我的 gulpfile.babel.js 有这个任务:
gulp.task('build:js', ['lint'], () => {
return browserify({
entries: path.resolve(paths().source.js, 'script.js'),
extensions: ['.jsx'],
debug: true
})
.transform(babelify)
.plugin('minifyify', {
map: 'script.js.map.json',
output: path.resolve(paths().public.js, 'script.js.map.json')
})
.bundle()
.pipe(source('script.js'))
.pipe(gulp.dest(path.resolve(paths().public.js)))
.pipe(notify({
onLast: true,
message: 'Building JS done'
}));
});
我做错了什么?
谢谢
解决方案
您需要在 JS 入口点中的任何其他非 polyfill 代码之前导入 Babel polyfilly :
import 'babel-polyfill';
或者如果你已经切换到 Babel 7:
import '@babel/polyfill';
另请注意,您应该将预设切换为preset-env
. 我建议您升级到 Babel 7 并使用@babel/preset-env
.
假设你已经切换到 Babel 7,你.babelrc
应该是这样的:
{
"presets": [
[ "@babel/preset-env", {
"targets": {
"browsers": [ "last 1 version", "ie >= 11" ]
}
}]
]
}
推荐阅读
- c - C 套接字代码生成 ERRNO 24 消息
- flutter - Flutter:将小部件存储在变量中的效率如何?
- xml - 如何通过 XSLT 使用同级元素值插入新元素
- javascript - 当 responseType = document 时如何附加 XHR HTML 部分
- javascript - 定位在 JavaScript 中创建的 HTML 元素
- scala - 如何为 akka ActorSystem 的记录器设置 SLF4J 记录附加程序
- spring - 从 Mono 的 Controller 任务中返回 Flux
- python - 如何合并由 for 循环产生的多个字典?
- java - 这个java代码有问题吗?执行后的结果不对
- css - 如何指示选择了自定义单选按钮