我試圖在Heroku上部署我的應用程式,有兩個package.json檔案。
第一個是前端:
{
"name"。"quiz",
"版本": "0.0.0",
"scripts": {
"ng": "ng",
"start": "npm start --prefix server"。
"build": "ng build",
"watch": "ng build --watch --configuration development"。
"test": "ng test"。
"heroku-postbuild": "npm run build --prefix server && ng build --prod"。
},
"private": true。
"依賴性": {
"@angular/animations": "~12.0.2",
"@angular/common": "~12.0.2",
"@angular/compiler": "~12.0.2",
"@angular/core": "~12.0.2",
"@angular/forms": "~12.0.2",
"@angular/platform-browser": "~12.0.2",
"@angular/platform-browser-dynamic": "~12.0.2",
"@angular/router": "~12.0.2",
"rxjs": "~6.6.0"。
"tslib": "^2.1.0",
"zone.js": "~0.11.4".
},
"devDependencies": {
"@types/express"。"^4.17.13",
"@angular-devkit/build-angular": "~12.0.2"。
"@angular/cli": "~12.0.2",
"@angular/compiler-li": "~12.0.2",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1"。
"jasmine-core": "~3.8.0",
"karma": "~6.3.0"。
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.0.3"。
"karma-jasmine": "~4.0.0"。
"karma-jasmine-html-reporter": "^1.7.0",
"typescript": "~4.2.3".
},
"引擎": {
"node": "16.x",
"npm": "7.x".
}
}
第二部分是后端:
{
"name"。"server",
"版本": "1.0.0",
"描述": "",
"main": "dist/index",
"scripts": {
"start": "node ./dist/server/index.js"。
"dev": "nodemon index.ts",
"build": "tsc -p ."。
},
"author": ""。
"許可證": "ISC"。
"devDependencies": {
"@types/express": "^4.17.13",
"@types/node": "^16.6.1",
"nodemon": "^2.0.12",
"ts-node": "^10.2.1",
"typescript": "^4.3.5".
},
"dependencies": {
"express": "^4.17.1",
"zone.js": "^0.11.4".
},
"引擎": {
"node": "16.x"。
"npm": "7.x".
}
}
由于我的package.json首先啟動并觸發了/server/package.json--首先我嘗試構建后臺,在主package.json檔案中使用 "heroku-postbuild "命令,之后該命令構建了Angular應用程式。
但在Heroku運行 "start "命令后,顯示出這樣的錯誤:
Error。找不到module 'express'。
2021-09-18T17:16:28。 140193 00:00app[web.1]。Require stack:
2021-09-18T17:16:28。 140194 00:00app[web. 1]: - /app/server/dist/server/config/express.js.
2021-09-18T17:16:28. 140194 00:00app[web. 1]: - /app/server/dist/server/index.js.
2021-09-18T17:16:28. 140199 00:00app[web. 1]: at Function.Module. _resolveFilename (node:internal/modules/cjs/loader:933: 15)
2021-09-18T17:16:28。 140200 00:00app[web. 1]: at Function.Module. _load (node:international/modules/cjs/loader:778:27)
2021-09-18T17:16:28。 140200 00:00app[web. 1]: at Module. require (node:internal/modules/cjs/loader:1005:19)
2021-09-18T17:16:28。 140200 00:00app[web. 1]: at require (node:international/modules/cjs/helpers:94:18)
2021-09-18T17:16:28。 140201 00:00app[web. 1]: at Object.<anonymous> (/app/server/dist/server/config/express. js:6:33)
2021-09-18T17:16:28。 140201 00:00app[web. 1]: at Module. _compile (node:international/modules/cjs/loader:1101:14)
2021-09-18T17:16:28。 140202 00:00 app[web.1]: at Object. Module._extensions. js (node:international/modules/cjs/loader:1153:10)
2021-09-18T17:16:28。 140202 00:00app[web. 1]: at Module. load (node:internal/modules/cjs/loader:981:32)
2021-09-18T17:16:28。 140202 00:00app[web. 1]: at Function.Module. _load (node:internal/modules/cjs/loader:822:12)
2021-09-18T17:16:28。 140202 00:00app[web. 1]: at Module. require (node:internal/modules/cjs/loader:1005:19) {
2021-09-18T17:16:28. 140203 00:00app[web.1]。code: 'MODULE_NOT_FOUND'。
2021-09-18T17:16:28。 140204 00:00app[web.1]。requireStack: [
2021-09-18T17:16:28. 140204 00:00app[web.1]。'/app/server/dist/server/config/express.js'/span>,
2021-09-18T17:16:28. 140204 00:00app[web.1]。'/app/server/dist/server/index.js'' 。
2021-09-18T17:16:28. 140205 00:00app[web.1]。]
2021-09-18T17:16:28。 140205 00:00app[web.1]。}
當我在本地運行所有這些命令時--它可以作業。
我解決了這個問題。
我通過將 "express "移到我的主package.json檔案中來解決這個問題,但這并不是我想實作的目標。我希望有兩個獨立的json檔案,這樣我就可以輕松地處理每個后端和前端的安裝模塊。
我做錯了什么?
我做錯了什么?
uj5u.com熱心網友回復:
因此,問題實際上是我需要在服務器和前端檔案夾中都進行npm install。
Heroku有一個特殊的命令 "heroku-prebuild",它可以幫助預先準備好每一個檔案夾,然后再進行構建。
我創建了這樣的命令:
"heroku-prebuild"/span>。"npm install --prefix server && npm install"。
"heroku-postbuild": "npm run build --prefix server && ng build --prod"。
首先,Heroku運行 "heroku-prebuild",為前端和后端安裝所有的npm模塊,然后,它運行 "heroku-postbuild",再次使用不同的package.json檔案構建前后端。
之后,它運行"start"。"npm start --prefix server",一切都正常了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327655.html
標籤:
上一篇:maven多級繼承的排除法
