簡體   English   中英

在heroku上部署Nodejs+Express+React+Webpack應用

[英]Deploy Nodejs+Express+React+Webpack app on heroku

我已經使用 node js、express、webpack、react 和 socket io 制作了一個 web 應用程序,我想將它部署在 heroku 上。 當我嘗試它時,我可以訪問該網站,但它向我顯示了一條錯誤消息:

不能獲取 /

這是我的配置:

    "scripts": {
    "start": "npm run dev",
    "build": "webpack --mode production",
    "client": "webpack-dev-server --mode development --devtool inline-source-map --hot",
    "server": "nodemon src/server/index.js",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install && npm run build"
  }

在我更改它之前,啟動腳本是node src/server/index.js ,因為我運行npm run dev在本地啟動我的應用程序。

這是我的存儲庫: http : //git.kamal-allali.fr/kamal/prog_web_5a

這是heroku鏈接: https ://fast-earth-60949.herokuapp.com

這是heroku日志:

2018-11-05T21:42:44.984679+00:00 app[web.1]: 1構建時間:11/05/2018 9:42:44 PM

2018-11-05T21:42:44.984681+00:00 應用程序[web.1]: 1 項資產
大小塊塊名稱

2018-11-05T21:42:44.984683+00:00 app[web.1]: 1 bundle.js 7.42 MiB main [emitted] main

2018-11-05T21:42:44.984685+00:00 app[web.1]: 1 favicon.ico 40.4 KiB [發出]

2018-11-05T21:42:44.984686+00:00 app[web.1]: 1 index.html 717 bytes [emitted]

2018-11-05T21:42:44.984688+00:00 app[web.1]: 1入口點 main = bundle.js

2018-11-05T21:42:44.984710+00:00 app[web.1]: 1 [./node_modules/loglevel/lib/loglevel.js] 7.68 KiB {main} [內置]

2018-11-05T21:42:44.984712+00:00 app[web.1]: 1 [./node_modules/react-dom/index.js] 1.33 KiB {main} [內置]

2018-11-05T21:42:44.984713+00:00 app[web.1]: 1 [./node_modules/react/index.js] 190 字節 {main} [built] 2018-11-05T21:42:44.984715+ 00:00 app[web.1]: 1 [./node_modules/url/url.js] 22.8 KiB {main} [內置]

2018-11-05T21:42:44.984718+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/index.js? http://localhost:3000] (webpack)-dev-server/client? http://localhost:3000 7.78 KiB {main} [內置]

2018-11-05T21:42:44.984720+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay。 js 3.58 KiB {main} [內置]

2018-11-05T21:42:44.984723+00:00 app[web.1]: 1 [0] multi (webpack)-dev-server/client? http://localhost:3000 (webpack)/hot/dev-server.js ./src/client/index.js 52 字節 {main} [內置]

2018-11-05T21:42:44.984724+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket. js 1.05 KiB {main} [內置]

2018-11-05T21:42:44.984726+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/node_modules/strip-ansi/index.js] (webpack)-dev-server/ node_modules/strip-ansi/index.js 161 字節 {main} [內置]

2018-11-05T21:42:44.984728+00:00 app[web.1]: 1 [./node_modules/webpack/hot sync ^./log$] (webpack)/hot sync nonrecursive ^./log$ 170 字節{main} [內置]

2018-11-05T21:42:44.984730+00:00 app[web.1]: 1 [./node_modules/webpack/hot/dev-server.js] (webpack)/hot/dev-server.js 1.61 KiB {主要} [內置]

2018-11-05T21:42:44.984732+00:00 app[web.1]: 1 [./node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 75 bytes {main} [built ]

2018-11-05T21:42:44.984733+00:00 app[web.1]: 1 [./node_modules/webpack/hot/log-apply-result.js] (webpack)/hot/log-apply-result。 js 1.27 KiB {main} [內置]

2018-11-05T21:42:44.984735+00:00 app[web.1]: 1 [./src/client/Layout.js] 4.33 KiB {main} [內置]

2018-11-05T21:42:44.984736+00:00 app[web.1]: 1 [./src/client/index.js] 205 字節 {main} [內置]

2018-11-05T21:42:44.984738+00:00 app[web.1]: 1 + 349 個隱藏模塊

2018-11-05T21:42:44.984740+00:00 app[web.1]: 1個用於“index.html”的子 html-webpack-plugin:

2018-11-05T21:42:44.984742+00:00 應用程序[web.1]: 1 1 資產

2018-11-05T21:42:44.984743+00:00 app[web.1]: 1入口點未定義 = index.html

2018-11-05T21:42:44.984745+00:00 應用程序[web.1]: 1
[./node_modules/html-webpack-plugin/lib/loader.js!./public/index.html] 828 字節 {0} [內置]

2018-11-05T21:42:44.984746+00:00 應用程序[web.1]: 1
[./node_modules/lodash/lodash.js] 527 KiB {0} [built]2018-11-05T21:42:44.984748+00:00 app[web.1]: 1
[./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 489 字節 {0} [內置]

2018-11-05T21:42:44.984749+00:00 應用程序[web.1]: 1
[./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 字節 {0} [內置]

2018-11-05T21:42:44.984751+00:00 app[web.1]: 1 ℹ 「wdm」:編譯成功。

2018-11-05T22:16:20.551630+00:00 heroku[web.1]:空閑

2018-11-05T22:16:20.552092+00:00 heroku[web.1]:狀態從上變為下

2018-11-05T22:16:21.411951+00:00 heroku[web.1]:使用 SIGTERM 停止所有進程

2018-11-05T22:16:21.808625+00:00 heroku[web.1]:進程以狀態 143 退出

2018-11-06T08:35:42.000000+00:00 app[api]:構建由用戶 kamal.allali@outlook.fr 啟動

2018-11-06T08:36:36.888512+00:00 heroku[web.1]:狀態從關閉變為啟動

2018-11-06T08:36:36.713630+00:00 app[api]:由用戶 kamal.allali@outlook.fr 部署 d62783d3

2018-11-06T08:36:36.713630+00:00 app[api]:發布 v12 由用戶 kamal.allali@outlook.fr 創建

2018-11-06T08:36:40.000000+00:00 app[api]:構建成功

2018-11-06T08:36:42.010068+00:00 heroku[web.1]:使用命令npm start啟動進程

2018-11-06T08:36:45.324322+00:00 應用程序[web.1]:

2018-11-06T08:36:45.324353+00:00 app[web.1]: > projet-web-5a@1.0.0 start /app

2018-11-06T08:36:45.324355+00:00 app[web.1]: > npm run dev

2018-11-06T08:36:45.324356+00:00 應用程序[web.1]:

2018-11-06T08:36:45.753063+00:00 應用程序[web.1]:

2018-11-06T08:36:45.753112+00:00 app[web.1]: > projet-web-5a@1.0.0 dev /app

2018-11-06T08:36:45.753114+00:00 app[web.1]: > 同時“npm 運行服務器”“npm 運行客戶端”

2018-11-06T08:36:45.753116+00:00 應用程序[web.1]:

2018-11-06T08:36:47.147860+00:00 應用程序[web.1]: 1

2018-11-06T08:36:47.147877+00:00 app[web.1]: 1 > projet-web-5a@1.0.0 客戶端/app

2018-11-06T08:36:47.147879+00:00 app[web.1]: 1 > webpack-dev-server --mode development --devtool inline-source-map --hot

2018-11-06T08:36:47.147881+00:00 應用程序[web.1]: 1

2018-11-06T08:36:47.172481+00:00 應用程序[web.1]: [0]

2018-11-06T08:36:47.172485+00:00 app[web.1]: [0] > projet-web-5a@1.0.0 服務器/app

2018-11-06T08:36:47.172487+00:00 app[web.1]: [0] > nodemon src/server/index.js

2018-11-06T08:36:47.172488+00:00 應用程序[web.1]: [0]

2018-11-06T08:36:47.672353+00:00 應用程序[web.1]: [0] [nodemon] 1.18.4

2018-11-06T08:36:47.673281+00:00 app[web.1]:[0][nodemon]隨時重啟,輸入rs

2018-11-06T08:36:47.673747+00:00 app[web.1]: [0] [nodemon] 觀看:/app/src/server/**/*

2018-11-06T08:36:47.674424+00:00 app[web.1]: [0] [nodemon] 起始node src/server/index.js

2018-11-06T08:36:47.963706+00:00 app[web.1]: [0] 監聽端口 45437

2018-11-06T08:36:48.299567+00:00 heroku[web.1]:狀態從開始變為向上

2018-11-06T08:36:48.679674+00:00 app[web.1]: 1 clean-webpack-plugin: /app/dist 已被刪除。

2018-11-06T08:36:48.905698+00:00 app[web.1]: 1 ℹ 「wds」:項目運行在http://localhost:3000/

2018-11-06T08:36:48.906031+00:00 app[web.1]: 1 ℹ 「wds」:webpack 輸出來自 /

2018-11-06T08:36:48.956210+00:00 app[web.1]: 1 ⚠ 「wds」:無法打開瀏覽器。 如果您在無頭環境中運行,請不要使用 --open 標志

2018-11-06T08:36:55.276089+00:00 heroku[router]: at=info method=GET path="/" host=fast-earth-60949.herokuapp.com request_id=2474b83b-65ce-43b4-a54f- 6851d5f55a7c fwd="78.112.168.129" dyno=web.1 connect=0ms service=9ms status=404 bytes=360 protocol=https

2018-11-06T08:36:57.303048+00:00 app[web.1]: 1 ℹ “wdm”: Hash: 6de9947fac0c16b70883

2018-11-06T08:36:57.303058+00:00 app[web.1]: 1版本: webpack 4.19.1

2018-11-06T08:36:57.303061+00:00 app[web.1]: 1時間: 8512ms

2018-11-06T08:36:57.303063+00:00 app[web.1]: 1構建時間:11/06/2018 8:36:57 AM

2018-11-06T08:36:57.303066+00:00 應用程序[web.1]: 1 項資產
大小塊塊名稱

2018-11-06T08:36:57.303069+00:00 app[web.1]: 1 bundle.js 7.42 MiB main [emitted] main

2018-11-06T08:36:57.303071+00:00 app[web.1]: 1 favicon.ico 40.4 KiB [發出]

2018-11-06T08:36:57.303073+00:00 app[web.1]: 1 index.html 717 bytes [emitted]

2018-11-06T08:36:57.303074+00:00 app[web.1]: 1入口點 main = bundle.js

2018-11-06T08:36:57.303077+00:00 app[web.1]: 1 [./node_modules/loglevel/lib/loglevel.js] 7.68 KiB {main} [內置]

2018-11-06T08:36:57.303078+00:00 app[web.1]: 1 [./node_modules/react-dom/index.js] 1.33 KiB {main} [內置]

2018-11-06T08:36:57.303080+00:00 app[web.1]: 1 [./node_modules/react/index.js] 190 字節 {main} [內置] 2018-11-06T08:36:57.303082+ 00:00 app[web.1]: 1 [./node_modules/url/url.js] 22.8 KiB {main} [內置]

2018-11-06T08:36:57.303084+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/index.js? http://localhost:3000] (webpack)-dev-server/client? http://localhost:3000 7.78 KiB {main} [內置]

2018-11-06T08:36:57.303087+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay。 js 3.58 KiB {main} [內置]

2018-11-06T08:36:57.303090+00:00 app[web.1]: 1 [0] multi (webpack)-dev-server/client? http://localhost:3000 (webpack)/hot/dev-server.js ./src/client/index.js 52 字節 {main} [內置]

2018-11-06T08:36:57.303091+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket. js 1.05 KiB {main} [內置]

2018-11-06T08:36:57.303093+00:00 app[web.1]: 1 [./node_modules/webpack-dev-server/node_modules/strip-ansi/index.js] (webpack)-dev-server/ node_modules/strip-ansi/index.js 161 字節 {main} [內置]

2018-11-06T08:36:57.303095+00:00 app[web.1]: 1 [./node_modules/webpack/hot sync ^./log$] (webpack)/hot sync nonrecursive ^./log$ 170 字節{main} [內置]

2018-11-06T08:36:57.303099+00:00 app[web.1]: 1 [./node_modules/webpack/hot/dev-server.js] (webpack)/hot/dev-server.js 1.61 KiB {主要} [內置]

2018-11-06T08:36:57.303100+00:00 app[web.1]: 1 [./node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 75 bytes {main} [built ]

2018-11-06T08:36:57.303102+00:00 app[web.1]: 1 [./node_modules/webpack/hot/log-apply-result.js] (webpack)/hot/log-apply-result。 js 1.27 KiB {main} [內置]

2018-11-06T08:36:57.303104+00:00 app[web.1]: 1 [./src/client/Layout.js] 4.33 KiB {main} [內置]

2018-11-06T08:36:57.303106+00:00 app[web.1]: 1 [./src/client/index.js] 205 字節 {main} [內置]

2018-11-06T08:36:57.303108+00:00 app[web.1]: 1 + 349 個隱藏模塊

2018-11-06T08:36:57.303109+00:00 app[web.1]: 1個用於“index.html”的子 html-webpack-plugin:

2018-11-06T08:36:57.303111+00:00 應用程序[web.1]: 1 1 資產

2018-11-06T08:36:57.303113+00:00 app[web.1]: 1入口點未定義 = index.html

2018-11-06T08:36:57.303115+00:00 應用程序[web.1]: 1
[./node_modules/html-webpack-plugin/lib/loader.js!./public/index.html] 828 字節 {0} [內置]

2018-11-06T08:36:57.303116+00:00 應用程序[web.1]: 1
[./node_modules/lodash/lodash.js] 527 KiB {0} [built]2018-11-06T08:36:57.303118+00:00 app[web.1]: 1
[./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 489 字節 {0} [內置]

2018-11-06T08:36:57.303119+00:00 應用程序[web.1]: 1
[./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 字節 {0} [內置]

2018-11-06T08:36:57.303457+00:00 app[web.1]: 1 ℹ 「wdm」:編譯成功。

您需要將您的節點版本添加到您的package.json

例子:

  "engines": {
    "node": "10.11.0"
  }

我在評論中回答,但這不是最好的方法,所以我會在這里編輯。

由於您正在嘗試提供靜態內容,請嘗試使用靜態中間件。

消除

app.get('*', (req,res) =>{
    res.sendFile(path.join(__dirname,'../../public/index.html'));
});

並添加

app.use(express.static(path.join(__dirname,'../../public')));

第二次編輯。

您需要構建您的項目並提供該文件夾,通常是一個 dist 或 build 文件夾。

要做到這一點,你有幾個選擇,一個是在將你的更改發布到 heroku 之前構建項目,但這可能會有點乏味。

另一種選擇是執行安裝后腳本,以便在 heroku 執行 npm install 后構建項目,並使用最新更改創建 dist 或 build 文件夾。

"postinstall": "npm run build"

如果您不希望每次執行 npm install 時都運行腳本,則可以在 heroku 中使用 if-env 和環境變量。

"postinstall": "if-env NODE_ENV=production && npm run build"

一旦您知道在構建時正在創建哪個文件夾,請更改下一行。

app.use(express.static(path.join(__dirname,'path to the folder with the prod build')));

沒有 Heroku 日志,這有點像一種猜測……但是

無法 GET / - 表示 express 不響應路徑..

Heroku 正在使用 express 為 NodeJs 提供服務,這就是錯誤所在

通過檢查 server/index.js 中的代碼,您正在使用path包並忘記導入它:)

const path = require('path');

一旦你解決了這個問題,你還需要添加一個條件來訪問DIST文件夾而不是公共(因為你將為 DIST 文件夾提供服務)

if (process.env.NODE_ENV === 'production') {
    app.use(express.static(path.join(__dirname, 'build')));
    app.get('*', function (req, res) {
        res.sendFile(path.join(__dirname, 'build', 'index.html'));
    });
}

*還要檢查 dist 正在加載並且不在.gitignore 上

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM