我正在将 travis 环境升级到节点 20。我有一个正在部署 firebase 功能的脚本。
这是我的.travis.yml
...
install: bash $HOME/build/ChangEdApps/changed-javascript/backend/shellScripts/travis-script.sh
language: node_js
node_js:
- '20'
dist: jammy
这是错误
i functions: preparing functions directory for uploading...
i functions: packaged /home/travis/build/ChangEdApps/changed-javascript/web-apps/changed-admin-app/functions (149.81 KB) for uploading
✔ functions: functions folder uploaded successfully
i functions: updating Node.js 20 (1st Gen) function app(us-central1)...
Build failed: npm ERR! code EBADPLATFORM
npm ERR! notsup Unsupported platform for [email protected]: wanted {"os":"darwin"} (current: {"os":"linux"})
npm ERR! notsup Valid os: darwin
npm ERR! notsup Actual os: linux
travis 脚本
npm i --prefix $PROJECT_DIR_PWD/web-apps/changed-admin-app/functions -f &&
npm i request firebase-functions --prefix $PROJECT_DIR_PWD/web-apps/changed-admin-app/functions &&
此模块 fsevents 未声明,它是对等依赖项,我尝试将其移至可选并执行
--omit=optional
,我尝试了 npm ci
的变体,我尝试删除 package-lock.json,我尝试手动更改包 -锁定linux而不是darwin。我尝试过审计和清理。通过删除包锁并在 travis env 中执行 npm i,我什至不确定它是从哪里获取 darwin 的。
似乎没有任何作用。
所以我最终分三步完成了这件事
1
rm package-lock.json
2
npm i ...
3 完成后,
sed -i 's/darwin/linux/g' $PROJECT_DIR_PWD/package-lock.json
这最终让我能够从 travis 部署 firebase 功能