部署到Gcloud的App在编译TS时不能写入JS文件?

App deployed to Gcloud can't write JS files when compiling TS?

我向现有的 nodejs 应用程序添加了一些 TS 代码。

我第一次将项目从 GitHub 拉到 gcloud 时一切正常。

这次我做了一些改动,添加了一些 TS 文件,现在应用程序在部署后不会 运行。

Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.

日志显示我的 TS 文件的 JS 版本写入失败。

{
 insertId: "5eb4e6c8000b9ff215033be3"  
 labels: {…}  
 logName: "projects/ncatsidg-dev/logs/stdout"  
 receiveTimestamp: "2020-05-08T04:57:44.821184556Z"  
 resource: {…}  
 textPayload: "error TS5033: Could not write file '/srv/src/models/DataModelList.js': EROFS: read-only file system, open '/srv/src/models/DataModelList.js'."  
 timestamp: "2020-05-08T04:57:44.761842Z"  
}

我知道gcloud deployment是只读的,不过应该可以编译TS和deploy。我的 package.json 中有一个编译步骤,它应该为 gcloud (so sayeth this internet page) 将 TS 编译为 JS,但是,唉,没有工作!

  "scripts": {
    "test": "node src/index.js & jest",
    "start": "tsc && nodemon src/index.js",
    "start:ci": "tsc && node src/index.js",
    "gcp-build": "tsc -p ."
  },

感谢您的回复。

事实证明 gcloud app deploy 足够聪明,可以编译 TS 和部​​署 JS。

但是当我将启动命令更改为

时,我智胜
"start": "tsc && nodemon src/index.js"

所以它试图在应用程序 运行 时再次重新编译 JS 文件,但它已经完成,所以没有必要。

当我删除该启动命令中的 tsc 时,它按预期工作。