gatsby build 不支持 async await 问题的解决
症状:
使用 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 函数,看来第一版的 gatsby 的 webpack 默认配置并不支持 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就可以成功啦!