簡體   English   中英

在 Heroku 上部署節點應用程序時出現問題 – 構建成功,但返回錯誤:找不到模塊“請求”

[英]Problem deploying node app on Heroku – build successful, but returns Error: Cannot find module 'request'

我仍在用 javascript、react 等嘗試使用 node 和這種現代架構。 但是我在 web 開發(PHP,ASP.NET)方面有很多經驗。 無論如何,我正在將我的舊框架轉碼為節點並嘗試使用 Heroku 來托管它。 在開始階段,我設法部署並讓我的應用程序完全在 web 中運行以進行測試。 然后,我開始處理我的應用程序的許多其他部分,直到現在才再次測試部署。

我已經搜索了一整天來調試正在發生的問題,並設法達到 Heroku 中的構建成功的程度。 問題是,當我運行訪問應該工作的地址時,它會返回一個通用錯誤:

at=error code=H10 desc="App crashed" method=GET path="/system" host=syncsystem-multiplatform-v1.herokuapp.com request_id=9c7e251e-4947-45cb-928e-674148718045 fwd="186.231.136.56" dyno=連接=服務=狀態=503字節=協議=http

在“查看日志”部分,顯示如下:

    2021-04-14T21:05:29.722072+00:00 heroku[web.1]: State changed from crashed to starting
    2021-04-14T21:05:38.899481+00:00 heroku[web.1]: Starting process with command `node app`
    2021-04-14T21:05:46.776113+00:00 heroku[web.1]: Process exited with status 1
    2021-04-14T21:05:46.851815+00:00 heroku[web.1]: State changed from starting to crashed
    2021-04-14T21:05:46.551799+00:00 app[web.1]: internal/modules/cjs/loader.js:626
    2021-04-14T21:05:46.551865+00:00 app[web.1]:     throw err;
    2021-04-14T21:05:46.551866+00:00 app[web.1]:     ^
    2021-04-14T21:05:46.551866+00:00 app[web.1]: 
    2021-04-14T21:05:46.551866+00:00 app[web.1]: Error: Cannot find module 'request'
    2021-04-14T21:05:46.551867+00:00 app[web.1]: Require stack:
    2021-04-14T21:05:46.551867+00:00 app[web.1]: - /app/app.js
    2021-04-14T21:05:46.551872+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:623:15)
    2021-04-14T21:05:46.551872+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:527:27)
    2021-04-14T21:05:46.551877+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:681:19)
    2021-04-14T21:05:46.551878+00:00 app[web.1]:     at require (internal/modules/cjs/helpers.js:16:16)
    2021-04-14T21:05:46.551878+00:00 app[web.1]:     at Object.<anonymous> (/app/app.js:20:17)
    2021-04-14T21:05:46.551878+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:774:30)
    2021-04-14T21:05:46.551879+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    2021-04-14T21:05:46.551879+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:641:32)
    2021-04-14T21:05:46.551879+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    2021-04-14T21:05:46.551879+00:00 app[web.1]:     at Function.Module.runMain (internal/modules/cjs/loader.js:837:10) {
    2021-04-14T21:05:46.551884+00:00 app[web.1]:   code: 'MODULE_NOT_FOUND',
    2021-04-14T21:05:46.551885+00:00 app[web.1]:   requireStack: [ '/app/app.js' ]
    2021-04-14T21:05:46.551885+00:00 app[web.1]: }

在我進行調試的研究期間,我發現了以下要點: 1 - 在我的 Procfile 中,我有這一行:web: node app

2 - 在我的 package 上。 Json,我明白這部分是必不可少的:

    "scripts": {
        "start": "node app"
    },

3 – 在我的主 app.js 上,我已經使用 Heroku 的服務器變量完成了配置:

    app.listen(process.env.PORT || process.env.CONFIG_SYSTEM_PORT, ()=>{
        if(gSystemConfig.configDebug === true)
        {
            console.log(`app running on port: ${ process.env.PORT || process.env.CONFIG_SYSTEM_PORT }`);
        }
    });

4 – 我已經通過 Heroku 的應用設置禁用了服務器變量緩存:NODEMODULESCACHE=false

5 – 我已經建立了一個鏈接的 github 存儲庫以使部署自動化: https://github.com/jorge-mauricio/syncsystem-multiplatformv1-dev/tree/master

如果有人需要查看完整的源代碼,它位於 github 存儲庫: https://github.com/jorge-mauricio/syncsystem-multiplatformv1-dev/tree/master

其中有一些反應文件夾,但這不是現在的主要焦點。 主要重點是在節點(app.js、backend_node、components_node)中運行應用程序,順便說一下,它在本地環境中運行良好。

應該加載登錄屏幕的在線地址是: http://syncsystem-multiplatform-v1.herokuapp.com/system

有人對我可能會錯過什么有任何想法嗎?

謝謝,豪爾赫毛里西奧

看起來問題正是 output 錯誤所說的:它找不到模塊request 在您的文件package.json中,您指定了您正在使用的庫(模塊),並且那里似乎缺少request

例如,當您執行npm install express (或yarn add express ,同樣的事情)時,您將此庫添加到您的package.json文件中。 Heroku 首先從package.json獲取這些依賴項,以便隨后需要它們。

此外,從外觀上看,請求庫已被棄用 我建議切換到axios似乎可以滿足相同的需求。

編輯:我現在看到該模塊實際上列在package-lock.json中,所以應該沒有問題。 但是,您可以嘗試運行npm install request以手動添加它,然后部署到 Heroku。 這樣,您可以查看問題似乎在於 Heroku 配置或模塊本身。

暫無
暫無

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

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