pnpm run build报错Search string not found: “for (const existingRoot of buildInfoVersionMap.roots) {“

前端 潘老师 3个月前 (07-16) 642 ℃ (1) 扫码查看

今天测试环境的vue项目在使用jekins构建到执行pnpm run build时报错,提示错误如下:

+ pnpm run build

> cmms-web@0.0.0 build /var/lib/jenkins/jobs/cmms-web-test/workspace
> vue-tsc && vite build


/var/lib/jenkins/jobs/cmms-web-test/workspace/node_modules/.pnpm/vue-tsc@1.8.27_typescript@5.5.3/node_modules/vue-tsc/bin/vue-tsc.js:68
            throw err;
            ^
Search string not found: "for (const existingRoot of buildInfoVersionMap.roots) {"
(Use `node --trace-uncaught ...` to show where the exception was thrown)
 ELIFECYCLE  Command failed with exit code 1.
Build step 'Execute shell' marked build as failure
WARN: Unable to locate 'report-task.txt' in the workspace. Did the SonarScanner succeed?
SSH: Current build result is [FAILURE], not going to run.
Finished: FAILURE

报错原因

然后百度了下和bing搜索了下都不行,还是得google,一下子就搜索到了问题原因(更具体看这个地址),顺便推荐下google镜像站,如下:

翻译下就是因为原先typescript版本由5.4版本升级到了5.5版本导致的,啥?我没升级啊,咋回事?看了下jekin构建时安装依赖时的截图,发现确实是5.5.3版本,那么原因基本就确定了,基本就是因为版本升级导致的!

解决办法

按照搜索的解决办法是如下:

cd frontend
rm -rf node_modules
npm cache clean --force

如果你是pnpm就就直接使用pnpm,这个方法对本地可能比较有效,但是我这里本地是ok的,上线到测试环境却报错的了,于是看了下本地的ts的版本,使用如下指令:

pnpm list

结果如下:

本地确实是5.4版本的,后来发现pnpm-lock.yaml中的版本也是5.4版本的(npm就去看package-lock.json),没问题,那就奇怪了,怎么本地版本正常,开发环境就异常的,经排查发现是因为pnpm-lock.yaml文件竟然没提交到gitlab,导致jekins去拉取后pnpm install直接拉的的就最新版本,到此,问题就明确了,把pnpm-lock.yaml文件提交了gitlab,再去构建发现版本就正常了:

进而构建就成功了,vue build报错Search string not found: “for (const existingRoot of buildInfoVersionMap.roots) {“问题完美解决!

后续更新优化

后来发现新的项目还是不行,最后解决方案修改package.json文件中的配置项,如下:

#原来是
"typescript": "^5.0.5",
#现在改为
"typescript": "~5.4.5",

然后再去pnpm install发现直接更新了ts版本问5.4.5,pnpm-lock.yaml 中的也也跟着自动更新了,完美解决!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/front/13114.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】

(1) 个小伙伴在畅所欲言
  1. 用户头像
    ty官网还在更新么
    演员 2024-07-16 17:37 回复