【问题标题】:Problem with deploying to Google Cloud App Engine部署到 Google Cloud App Engine 时出现问题
【发布时间】:2020-01-22 23:04:09
【问题描述】:

我正在尝试将我的应用部署到 Google Cloud,但仍然收到错误消息:

ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:
> biurovue@1.0.0 start /app
> node build/dev-server.js
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'chalk' .....

我的应用是用 nodejs 构建的,后端是 Express 和 Sequalizer,前端是 vuejs。 我在打电话

gcloud int
gcloud app deploy

然后,几分钟后出现上述错误。 试了好几次:

npm install chalk

另外,我已经删除了 node_modules 文件夹并从头开始调用 npm install。没有帮助。

我的 package.json 如下:

{
"name": "biurovue",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "Shark <arek.shark@gmail.com>",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build": "node build/build.js",
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js -- single-run",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
},
"dependencies": {
"@okta/jwt-verifier": "0.0.11",
"axios": "^0.18.0",
"cors": "^2.8.4",
"each-async": "^1.1.1",
"easy-async": "^1.0.0",
"finale-rest": "^1.0.6",
"indent-string": "^4.0.0",
"sequelize": "^4.37.6",
"sqlite3": "^4.1.0",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuedraggable": "^2.23.0"
},
"devDependencies": {
"autoprefixer": "^7.1.5",
"babel-core": "^6.26.0",
"babel-eslint": "^8.0.1",
"babel-loader": "^7.1.2",
"babel-plugin-istanbul": "^4.1.5",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.0",
"babel-preset-stage-2": "^6.24.1",
"babel-register": "^6.26.0",
"chai": "^4.1.2",
"chalk": "^2.4.2",
"chromedriver": "^2.33.1",
"connect-history-api-fallback": "^1.4.0",
"copy-webpack-plugin": "^4.1.1",
"cross-env": "^5.0.5",
"cross-spawn": "^5.1.0",
"css-loader": "^0.28.7",
"cssnano": "^3.10.0",
"eslint": "^4.9.0",
"eslint-config-standard": "^10.2.1",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.9.0",
"eslint-plugin-html": "^3.2.2",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.2.0",
"eslint-plugin-promise": "^3.6.0",
"eslint-plugin-standard": "^3.0.1",
"eventsource-polyfill": "^0.9.6",
"express": "^4.16.3",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.5",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"http-proxy-middleware": "^0.17.4",
"inject-loader": "^3.0.1",
"karma": "^1.7.1",
"karma-coverage": "^1.1.1",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-phantomjs-shim": "^1.5.0",
"karma-sinon-chai": "^1.3.2",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.31",
"karma-webpack": "^2.0.5",
"mocha": "^4.0.1",
"nightwatch": "^0.9.16",
"opn": "^5.1.0",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.3.0",
"phantomjs-prebuilt": "^2.1.15",
"rimraf": "^2.6.2",
"selenium-server": "^3.6.0",
"semver": "^5.4.1",
"shelljs": "^0.7.8",
"sinon": "^4.0.1",
"sinon-chai": "^2.14.0",
"sw-precache-webpack-plugin": "^0.11.4",
"uglify-es": "^3.1.3",
"url-loader": "^0.6.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.3",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.7.1",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-middleware": "^1.12.0",
"webpack-hot-middleware": "^2.19.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}

可能是什么问题?怎么解决?诊断这样的错误? 谢谢。

【问题讨论】:

  • 你能显示 package.json 吗?
  • noice,好的,在本地运行 npm ci --only=prod 然后出了什么错误,将它们的库移到“依赖项”部分,express 绝对不应该在 devDependencies 中
  • 我已经运行了这个命令,但是我没有错误,只有几个 node-pre-gyp 信息和一个 node-pre-gyp WARN,我应该如何处理这个输出?谢谢
  • 你的应用在之后启动吗?
  • 当我调用 npm run dev 时,我收到一个错误:“错误:找不到模块 'shelljs'”,我应该将 shelljs 从 devDependencies 移动到依赖项吗?

标签: node.js vue.js gcloud


【解决方案1】:

将它们移至dependencies。顾名思义,devDependencies 实际上应该只用于开发。假设您有一个包,该包又具有多个依赖项。假设您使用mochaJSchaiJSsinonJS 来实现完整的测试覆盖率。安装您的软件包的最终用户很可能不想安装您使用的测试和/或文档框架。因此,这些框架将放在devDependencies 上。在这种情况下,因为chalkshellJS运行时是必需的,所以必须将它们放在dependencies 中。

总结:将dependencies 用于运行时所需的包,devDependencies 用于仅用于开发(测试框架、linting 等)的包

【讨论】:

  • 谢谢,但是它们之间有这么多的依赖关系和关系,如果我从 devDependencies 转移到依赖关系,我怎么知道它们的魔力。
  • 别担心,重申我上面所说的,use dependencies for packages required **at runtime**。作为一般经验法则(当然有一些例外),您在代码中某处的requireimport 的任何包都应该放在dependencies 中。更具体地说,如果运行npm start(运行时)使用某个包,请将其放在dependencies 中。无论如何,我建议您阅读以下文章,以便您更深入地了解该主题。
猜你喜欢
  • 2020-01-13
  • 2023-03-10
  • 2020-11-24
  • 2019-01-30
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多