node升级带来的gulp坑

升级node

项目使用的node环境是10版本,而node官网lts版本已经是12版本。本着追求最新、体验最好的原则,进行了node版本升级,升级以后yarn build打包一下项目,坑点出现了,报错了。

fs.js:27
const { Math, Object } = primordials;
                         ^

ReferenceError: primordials is not defined
    at fs.js:27:26

node升级带来的gulp坑_第1张图片
程序猿的命就是不停的挖坑、填坑,每天准确定位到最深的,然后把自己埋进去,再一点点的把自己刨出来。报错有了定位一下这个错误,首先发现这是在执行gulptask的时候报错的,也就是大体知道了node升级到12版本造成了gulp的不适,到gulpgithub库查查issue吧,然后就发现了这个大坑,Gulp 3 is broken on Node 12 #2324,也就是说gulp3版本在node12上已经是被放弃的版本了。既然如此那就升级gulp吧。

升级gulp

既然Gulp 3 is no longer supported,那就升级gulp,按照gulp官方文档指导开始升级。

yarn add gulp gulp-cli --dev

gulp升级
package.json查询现在的gulp版本,现在都已经是latest版本了。我们再次build,见证奇迹的一刻到了:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-server@2.14.1 build:statics: `gulp statics`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-server@2.14.1 build:statics script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

gulp报错
被现实打了一脸,理想总是丰满现实总是骨干,gulp执行task依然报错。查查gulp文档看看。很不幸的发现如果是同步任务,升级以后无需做任何改变就可以使用,如果是异步任务,恭喜你中彩了,需要修改了,见官方文档async-completion,按照文档描述的修改即可。我采用的方式是Returning a promise

总结

项目中依赖的包实时追求最新总是伴随着一路荆棘,但是好在程序猿就是一路披荆斩棘的存在。遇到bug耐心看报错,随时找google,仔细看issue,认真看文档,一定在bug之路上所向披靡。

你可能感兴趣的:(前端)