3

我有一个 TypeScript 项目,该项目已多次部署到运行节点 10 的 Google App Engine 标准环境中,没有任何问题。但是,当我尝试将 App Engine 项目更新为节点 12 或 14 时(通过engines.nodepackage.json和)中的runtimeapp.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"
    },
4

1 回答 1

2

我遇到了完全相同的问题,只是将打字稿放在依赖项中,而不是 devDependencies 中。

在那之后它起作用了,但不能保证这是由于这种变化(因为我没有证据)。

于 2022-01-16T14:32:40.537 回答