背景
前段时间小老弟离职了,之前交给他的nuxt2官网项目又回到了我的手中,然后产品跟我说有几个东西需要优化一下,我说小意思,然后我就clone了最新代码准备露一手,然后…我项目就跑不起来了…理论上来说不应该啊,之前这个项目我开发过,不存在环境上的兼容,然后我就npm,cnpm,yarn,pnpm各种下包,删包都不行,静下心来思考了一下,终于找到了问题所在!!!
第一个报错 node版本14.17.0
internal/modules/cjs/loader.js:888
throw err;
^
Error: Cannot find module 'node:fs'
网上查了一下都说是node版本原因,需要升级node,然后我就升级到了14.21.3
,当然也可以升级16以及更高,不过这个时候就要注意node-sass
,sass-loader
(如果有使用到)的版本对应关系了,这个时候运行npm run dev
编译成功了,当我以为项目已经可以成功跑起来的时候,我浏览器访问了一下地址,然后又报了一个新的错误
第二个错误
context.outputFileSystem.lstat is not a function
看报错位置是webpack中间件报错,这就很奇怪了,看来还是环境问题,那就不会是项目代码出问题了,我就去看了一下package.json
里面nuxt的版本是2.15.8
然后我又去node_modules
里面找了一下下载的nuxt
包
好家伙,竟然是2.16.2,然后我又去npm
上面看了一下版本
巧不巧的,两年多时间不更新,偏偏在这个时候更新了,至于package.json里面是2.15.8,下载下来是2.16.2那就是另外一个知识点了
^表示:匹配最近的一个大版本比如1.0.2 将会匹配到1.x.x,但不包括2.x.x
表示:匹配最近的小版本比如1.0.2将会匹配1.0.x版本,但不匹配1.1.0
所以说报错的原因是因为一直下载的2.16.2,下面是这个版本修复的日志
至于我,我直接锁定死nuxt版本(去掉尖括号^)为2.15.8
没有取用2.16.2,继续开发