mit*_*med 14 browserify gulp babel-polyfill
如标题所示,即使我也想使用babel-polyfill允许我在代码中使用promise,但是我在IE11中遇到了未定义的错误。
我已经尝试过一段时间了,因为我已经看到几次在不同的站点上被问到,但是没有一种解决方案真正适合我(或更准确地说,我可能无法适应它们)我的代码)
我认为这些文件涉及:
.babelrc
{
"presets": [
"es2015",
"react"
]
}
Run Code Online (Sandbox Code Playgroud)
package.json:我在开发人员依赖项下拥有babel-polyfill,并试图将其置于依赖项下(都只是通过控制台手动交换并安装它),但似乎都没有用
我的script.js没有将其作为导入(但是,当我在package.json中看到该语法时,如果我尝试导入@ babel-polyfill或带正斜杠的其他组合,则找不到该模块)
最后,我的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'
}));
});
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
谢谢
con*_*exo 18
您需要在JS入口点中导入Babel polyfilly之前的任何其他非polyfill代码:
import 'babel-polyfill';
Run Code Online (Sandbox Code Playgroud)
或者如果您已经切换到Babel 7:
import '@babel/polyfill';
Run Code Online (Sandbox Code Playgroud)
另请注意,您应该将预设切换为preset-env。我建议您升级到Babel 7并使用@babel/preset-env。
假设您已经切换到Babel 7,这.babelrc应该是您的样子:
{
"presets": [
[ "@babel/preset-env", {
"targets": {
"browsers": [ "last 1 version", "ie >= 11" ]
}
}]
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14486 次 |
| 最近记录: |