Grunt构建失败 - ParseError: 'import'和'export'只能与'sourceType:module'一起使用

4

我浏览了github和stackoverflow上的许多文章。在我的package.json中,我有以下的开发依赖项,用于将ES6转化为ES5。

        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.0",
        "babel-loader": "^6.0.0",
        "babel-preset-env": "^1.6.1",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-latest": "^6.24.1",
        "babelify": "^8.0.0",
        "browserify": "^15.0.0",
        "grunt-browserify": "^5.2.0",
        "grunt": "^1.0.1",
        "grunt-cli": "^1.2.0"

我设置了一个grunt任务,使用babelify作为转换器和browserify将我的ES6文件编译成ES5。


browserify: { dist: { src: [‘src/component/myes6.js’], dest: ‘dist/src/component/myes5.js’, options: { transform: [ ['babelify', {presets: [["es2015", { loose: true, modules: false }]]}] ], browserifyOptions: { debug: true } } } }

我的ES6 js文件导入了一个作为函数导出的ES6 js文件的节点模块。我尝试从各种论坛中遵循许多建议,并查看了babel / babelify / grunt-browserify文档,但无法得出具体结论。

我之前认为这可能是版本问题,但现在我正在使用所有的Babel 6版本和最新的browserify / grunt-browserify等。但我仍然看到以下错误:

ParseError: 'import' and 'export' may appear only with 'sourceType: module'

任何帮助或指针将不胜感激。


有什么想法或建议吗? - Rajesh Dwivedi
你有没有运气解决这个问题? - Adam Youngers
2个回答

1
我已经解决了这个问题,安装了esmify插件npm install babel-plugin-esmify browser-resolve --save-dev
browserify: {
           dist: {
               src: ['src/component/myes6.js'],
               dest: 'dist/src/component/myes5.js',
               options: {
               plugin: [
                   [require('esmify')]
               ],
               transform: [
                    ['babelify', {
                        presets: [["es2015", { loose: true, modules: false }]]
                       }
                   ]
               }
           }
       },  

  

谢谢!我尝试了SO上的所有其他答案,但esmify是唯一对我有用的东西。我面临的问题是,只有在使用Grunt从GIT子模块browserify文件时才会出现错误。在其他地方使用babelify转换导入语句都很好用。 - ironic_ollins

0

我还没有尝试运行它,但是你的 browserify dist/src 周围的方括号不应该存在。尝试在没有它们的情况下运行此文件。


你有没有在这方面有什么好运? - Grazlewacky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接