我有一个 TypeScript 项目,该项目已多次部署到运行节点 10 的 Google App Engine 标准环境中,没有任何问题。但是,当我尝试将 App Engine 项目更新为节点 12 或 14 时(通过engines.node
在package.json
和)中的runtime
值app.yaml
,部署失败,将以下内容打印到控制台:
> ####@1.0.1 prepare /workspace
> npm run gcp-build
> ####@1.0.1 gcp-build /workspace
> tsc -p .
sh: 1: tsc: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! ####@1.0.1 gcp-build: `tsc -p .`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the ####@1.0.1 gcp-build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
根据以下文档,App Engine 应在devDependencies
运行package.json
脚本之前安装中列出的模块gcp-build
(正如预期的那样,在将 Node 版本设置为 10 进行部署时,它一直在执行此操作)。
https://cloud.google.com/appengine/docs/standard/nodejs/running-custom-build-step
在定位节点 12 或 14 而不是节点 10 时,我找不到任何有关此 App Engine 部署行为发生变化的文档。是否缺少某些配置?还是 Google 在运行脚本devDependencies
之前不再安装?gcp-build
这是devDependencies
我的部分package.json
(TypeScript 在那里):
"devDependencies": {
"@google-cloud/nodejs-repo-tools": "^3.3.0",
"@types/cors": "^2.8.12",
"@types/express": "^4.17.13",
"@types/pg": "^8.6.1",
"@types/request": "^2.48.7",
"tsc-watch": "^4.4.0",
"tslint": "^6.1.3",
"typescript": "^4.3.5"
},