故事缘起:
一个有些年头的项目要拿出来鞭尸,好巧不巧,之前运行环境的电脑已经被换掉了,新电脑上跑这个老项目就报了上面的错误。这个错误之前遇到并解决过一次,奈何忘记了,这次要记录下,因为还有老项目在(手动狗头)。
解决过程
项目曾经能运行,现在不能运行,说明不是项目的问题,是运行环境的问题。运行环境分为两部分:
- 包依赖
- node版本
包依赖
- 找到相似项目将其中关键版本修改为对应版本后安装运行,报相同错误
- Jenkins环境上竟然有之前的构建流程,进入工作空间,将package.json及package-lock.json及node_modules替换掉,竟然还是不行
那现在只有一种可能是node版本的问题
node版本
这里就不得不提NVM
了,nvm is a version manager for node.js, designed to be installed per-user, and invoked per-shell
,就是Node
版本管理工具了。
机器上运行不同的项目,这个工具还是非常不错的。安装及使用都比较简单,遇到的唯一问题是安装好环境变量的配置。
可能看到的版本是这样:
export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && . "$(brew --prefix)/opt/nvm/nvm.sh" # This loads nvm
[ -s "$(brew --prefix)/opt/nvm/etc/bash_completion" ] && . "$(brew --prefix)/opt/nvm/etc/bash_completion" # This loads nvm bash_completion
但要注意路径是不是真的如此:
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/Cellar/nvm/0.39.7/nvm.sh" ] && \. "/opt/homebrew/Cellar/nvm/0.39.7/nvm.sh"
[ -s "/opt/homebrew/Cellar/nvm/0.39.7/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/Cellar/nvm/0.39.7/etc/bash_completion.d/nvm"
这样就能在不同的项目中切换Node版本了。
从jenkins
中看到了正确的Node
版本,安装后就运行正常了。安装依赖前记得确认Node
版本。