系统维护:nvm的记录
npx n8n
Your Node.js version 18.16.1 is currently not supported by n8n.
Please use a Node.js version that satisfies the following version range: >=18.17 <= 22
运行n8n报错,提示node版本必须大于 18.17,而我是18.16.1,这个版本有些旧,大概是2023年的,但是这个版本和我服务端星球大作战的环境一致,所以我想保留。
前情回顾
nvm 可以用来管理的 Node.js 版本,快速切换。平时少用,但大概有些印象,搜索了一下,2024年8月记录过。
当时是为了解决「npm install -g总是没权限」的问题,安装了nvm,期望用它管理nodejs并维护目录权限的。但是没有使用它管理nodejs,而是手动管理目录权限,给npm config 加了path ~/.npm-global让npm install -g的项目路径换了解决的权限问题。牵涉到hexo,yarn,都是在改了之后装在~/.npm-global目录里的。
今天遇到的问题是版本不够,需要升级nodejs,我其实没必要共存多个版本,但nvm可以帮助我保留系统版本。
nvm管理方式:
使用以下命令查看 nvm 管理的 Node.js 版本列表:
nvm list
可以使用 nvm 安装一个新的 Node.js 版本,并切换到该版本,以此来验证 nvm 是否能够正常工作。
# 安装最新的长期支持版(LTS)
nvm install --lts
# 使用刚安装的版本
nvm use --lts
# 查看当前使用的 Node.js 版本
node -v
看看我当前的系统情况:
rhett@Mousebomb-MacStudio .nvm % nvm list
-> system
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)
**lts/*** -> **lts/iron** (-> N/A)
**lts/argon** -> v4.9.1 (-> N/A)
**lts/boron** -> v6.17.1 (-> N/A)
**lts/carbon** -> v8.17.0 (-> N/A)
**lts/dubnium** -> v10.24.1 (-> N/A)
**lts/erbium** -> v12.22.12 (-> N/A)
**lts/fermium** -> v14.21.3 (-> N/A)
**lts/gallium** -> v16.20.2 (-> N/A)
**lts/hydrogen** -> v18.20.4 (-> N/A)
**lts/iron** -> v20.16.0 (-> N/A)
rhett@Mousebomb-MacStudio .nvm % nvm --version
0.40.0
我当前👆的效果是这样,说明是用的系统的nodejs(之前在nodejs官网安装的)
经查询网络,在切换到每个 Node.js 版本后,手动执行以下命令,可以延续我之前已经安装过的全局包路径,这样我才能继续使用hexo等:
npm config set prefix '~/.npm-global'
实际操作
初次安装
nvm install --lts
遇到报错:
Your user’s .npmrc file (${HOME}/.npmrc)
has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.
Run `nvm use --delete-prefix` to unset it.
去掉–prefix
需要nvm use --delete-prefix system(已执行)。或者手动去修改.npmrc的内容,从
registry=https://registry.npmmirror.com/
prefix=/Users/rhett/.npm-global
改为registry=https://registry.npmmirror.com/ (已操作)
重新安装nodejs并设置全局包路径
重新安装最新版,并且按共享目录安装(已操作,无效):nvm install 22.15.0 --shared=~/.npm-global
但不知道成功与否,不过就算浪费一点空间也没事。
验证一下:npm install -g n8n
好家伙,果然前面没成功,n8n安装到了nvm管理的位置:/Users/rhett/.nvm/versions/node/v22.15.0/lib/node_modules/n8n
并做了软连接到/Users/rhett/.nvm/versions/node/v22.15.0/bin
嗯估计之前安装有问题,重新uninstall了再装一次:
nvm uninstall 22.15.0
nvm install 22.15.0 --shared=~/.npm-global
npm install -g n8n
还是装在.nvm里面啊,算了,--shared估计没用,是豆包骗我的。
反正之前安装的在.npm-global里的也不多,而且也能继续用,就先不管了。
运行n8n
运行的时候居然提示Safari不行。
Your n8n server is configured to use a secure cookie,
however you are either visiting this via an insecure URL, or using Safari.
To fix this, please consider the following options:
- Setup TLS/HTTPS (recommended), or
- If you are running this locally, and not using Safari, try using localhostinstead
- If you prefer to disable this security feature (not recommended), set the environment variable
N8N_SECURE_COOKIEtofalse
原因是Safari比较严格,在非https下不支持发送安全Cookie,但是我是在本地测试啊。
先临时用Chrome吧。