Babel 7不会在node_modules中转换依赖项:“ import”和“ export”可能仅与“ sourceType:module”一起出现

问题描述

我正在尝试在项目中使用@iconify-icons包,但是它使用es6模块,而我的babel配置拒绝对其进行转换,以使browserify可以正常使用。这是我使用browserify + babel构建的方式:

const babelConfig = {
    presets: [
        ["@babel/preset-env"],["@babel/preset-react"],],ignore: [],};

gulp.task('browserify',(done) => {
    return gulp.src('./resources/reactapp/app.js')
        .pipe(bro({
            transform: [
                babelify.configure(babelConfig),]
        }))
});

但是,在这种情况下,当我尝试从@ iconify-icons导入模块时,从browserify出现以下错误

/node_modules/@iconify-icons/mdi-light/upload.js:6
export default data;
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'

对我来说,Babel在将文件发送给browserify之前无法正确转换文件(该文件只能处理es5语法)。对于babel 6的建议解决方案是在babel config中使用global:true,但是该选项在babel 7中不存在。我猜想babel忽略了node_modules,即使我将ignore设置为一个空列表。

解决方法

万一有些可怜的人也发现自己在这里:global是作为转换属性传递的属性。

gulp.task('browserify',(done) => {
    return gulp.src('./resources/reactapp/app.js')
        .pipe(bro({
            transform: [
                [babelify.configure(babelConfig),{global:true}]
            ]
        }))
});