繁体   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