我在现有的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 ."
},
答案 0 :(得分:1)
感谢您的答复。
事实证明,gcloud应用程序的部署足够聪明,可以编译TS和部署JS。
但是当我将启动命令更改为
时,我却精明"start": "tsc && nodemon src/index.js"
因此,当应用程序运行时,它试图再次重新编译JS文件,但是它已经完成了,因此没有必要。
当我在启动命令中删除tsc时,它按预期工作。