部署TS时,部署到Gcloud的应用程序无法写入JS文件?

时间:2020-05-08 05:19:01

标签: typescript gcloud

我在现有的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部署是只读的,但是它应该能够编译TS并进行部署。我的package.json中有一个编译步骤,应该将TS编译为gcloud(so sayeth this internet page)的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 ."
  },

1 个答案:

答案 0 :(得分:1)

感谢您的答复。

事实证明,gcloud应用程序的部署足够聪明,可以编译TS和部署JS。

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

时,我却精明
"start": "tsc && nodemon src/index.js"

因此,当应用程序运行时,它试图再次重新编译JS文件,但是它已经完成了,因此没有必要。

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