症状:

使用 gatsby 第一版创建的项目,在 gatsby develop 时运行正常,但是在发布时 gatsby build 时报错:

 Error: component---src-pages-index-js-c938d5b5226f72f5900f.js from UglifyJs
  SyntaxError: Unexpected token operator «*», expected punc «(» [./src/pages/index.js:20,19]

分析:

找到源代码这一行,发现是一个 async 函数,看来第一版的 gatsbywebpack 默认配置并不支持 ES 6

找解决办法:

看了几篇github 聊天记录,有很多人碰到这个问题,最终在这篇聊天记录里找到了可以说是最优雅的解决办法了:

  • 首先安装一个babel插件:
    yarn add babel-plugin-transform-regenerator
    
  • 然后在gatsby-node.js文件中加入以下内容:
     exports.modifyBabelrc = ({ babelrc }) => ({
      ...babelrc,
      plugins: babelrc.plugins.concat(['transform-regenerator']),
    })
    
  • 然后gatsby build就可以成功啦!