首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GAE服务部署阶段使用webpack构建我的源代码?

如何在GAE服务部署阶段使用webpack构建我的源代码?
EN

Stack Overflow用户
提问于 2018-11-12 08:56:03
回答 1查看 411关注 0票数 0

GAE标准环境

我的想法和工作流程如下:

GAE服务部署到GCP =>构建我的源代码从.ts.js =>启动node.js服务器

这是我的package.json

代码语言:javascript
复制
{
  "name": "webpack-compile-after-deploy",
  "version": "1.0.0",
  "description": "",
  "main": "./dist/main.js",
  "scripts": {
    "start": "node ./dist/main.js",
    "prestart": "npm run build",
    "build": "webpack",
    "deploy:dev": "gcloud app deploy ./app.dev.yaml",
    "deploy:prod": "gcloud app deploy ./app.prod.yaml"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/express": "^4.16.0",
    "awesome-typescript-loader": "^5.2.1",
    "express": "^4.16.4",
    "typescript": "^3.1.6",
    "webpack": "^4.25.1",
    "webpack-cli": "^3.1.2",
    "webpack-node-externals": "^1.7.2"
  }
}

我将所有节点模块放到dependencies中,因为cloud build使用npm install --production命令来安装依赖项。

在我将GAE服务部署到GCP并尝试访问我的应用程序之后。

stackdriver logs向我展示了这样一个错误:

代码语言:javascript
复制
Error: Cannot find module '/srv/dist/main.js'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3

所以我认为npm run build可能失败了。

webpack部署阶段使用GAE编译我的源代码可以吗?

如果答案是肯定的。如何解决此错误?谢谢。

更新

我可以通过以下工作流成功地部署和运行我的应用程序:

构建从.ts.js的源代码,生成./dist目录=>运行gcloud app deploy./dist目录上传到GAE容器=>运行npm start以启动应用程序。

因此,这两个工作流之间唯一的区别是何时构建源代码。

在本地构建源代码或在云构建阶段构建源代码(在启动应用程序之前)

EN

回答 1

Stack Overflow用户

发布于 2019-01-24 22:08:38

这需要两个步骤

  1. 构建贡献npm构建step图像
  2. 使用npm构建步骤运行npm命令

创建然后NPM构建步骤映像

我已经定制了在叉子中生成图像以使用节点-高寒

代码语言:javascript
复制
git clone git@github.com:tonymet/cloud-builders.git
cd npm 
# this will create the npm image gcr.io/$PROJECT_ID/npm:latest
gcloud builds submit . 

将构建步骤添加到cloudbuild.yaml中,并手动提交

现在,在您的项目中创建一个cloudbuild.yaml,执行webpack步骤:

代码语言:javascript
复制
- name: "gcr.io/$PROJECT_ID/npm:latest"
  args: ["run" , "test"]
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy", "app-complete.yaml"]
timeout: "1600s"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53258686

复制
相关文章

相似问题

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