首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我试图通过GCP部署命令托管它时,Node.js应用程序无法工作。错误:找不到模块‘快递’

当我试图通过GCP部署命令托管它时,Node.js应用程序无法工作。错误:找不到模块‘快递’
EN

Stack Overflow用户
提问于 2018-09-09 19:52:48
回答 2查看 2.7K关注 0票数 2

我的NodeJS应用程序是用TypeScript编写的,是基于Express框架的。我想用gcloud app deploy命令在GCP云中托管它。因此,首先,我将我的TS源构建为JavaScript -is,这是正确的方法吗?

然后,在build (使用JS源代码)文件夹中,我尝试运行npm start命令,并且运行成功,我还可以使用Preview检查它:

效果很好。到现在为止还好。

然后,我从gcloud app deploy文件夹(内置到JS源代码)运行build,在部署过程中没有看到任何错误。

但是之后,每当我试图访问部署的应用程序时,每次请求都会收到500个错误。我查看了一个日志,发现了下一个错误:

代码语言:javascript
复制
Error: Cannot find module 'express'

,问题是什么?

我尝试了build文件夹中的下一个命令:

代码语言:javascript
复制
    npm install
    npm install express --save
    npm install -g express
    sudo apt-get install node-express

没什么对我有用的。

这是我的package.json文件:

代码语言:javascript
复制
{
  "name": "full-node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "tsc",
    "dev": "node -r ts-node/register ./src/server.ts",
    "debug": "ts-node --inspect ./src/server.ts",
    "start": "node build/server.js",
    "prod": "npm run build && npm run start"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ts-node": "^7.0.1",
    "typescript": "^3.0.1"
  },
  "dependencies": {
    "@types/lodash": "^4.14.116",
    "body-parser": "^1.18.3",
    "connect": "^3.6.6",
    "cors": "^2.8.4",
    "crypto": "^1.0.1",
    "express": "^4.16.3",
    "firebase-admin": "^6.0.0",
    "lodash": "^4.17.10"
  }
}

知道我错过了什么吗?这是将用TypeScript编写的应用程序部署到GCP云的正确方式吗?

app.yaml**:**

代码语言:javascript
复制
# [START app_yaml]
runtime: nodejs8
# [END app_yaml]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-19 10:32:50

问题很简单。似乎gcloud app deploy使用npm run build & npm run start命令在内部某个地方启动应用程序。要托管Node.Js,首先需要使用tsc命令将其构建为简单的JS。然后在build文件夹中重写package.json文件以使用正确的命令。看看我的start命令:"start": "node build/server.js"。我也在build文件夹中使用它,这意味着gcloud命令正在/build/build/文件夹中搜索。我已经将start命令更改为"start": "node server.js",然后所有操作都很好。

票数 0
EN

Stack Overflow用户

发布于 2018-09-16 09:27:17

由于您正在从构建文件夹中运行gcloud应用程序部署,package.json可能没有被部署,因为npm安装首先由应用程序引擎运行,没有办法missing.you可以转到gcp控制台,然后在app engine下查看版本,然后在诊断之后可以查看源文件(实际上部署到应用程序引擎的文件).keep,记住这仅适用于标准版本,而不是.keep。我可以从您的app.yaml中看到,您正在使用standard.If,然后转到应用根目录,在.gcloudignore文件中,您可以忽略不想要的文件/文件夹。要运行deploy.then,请从项目根目录中部署gcloud应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52248181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档