【问题标题】:Heroku App crashing from missing 'request-promise' ModuleHeroku 应用程序因缺少“请求承诺”模块而崩溃
【发布时间】:2020-08-02 10:45:40
【问题描述】:

我是 MERN 堆栈方面的新手(以及一般的编程)。我正在使用 heroku 构建一个应用程序来分配任务,而我的代理遇到了依赖问题。

这里是heroku日志:

2020-04-20T01:16:43.000000+00:00 app[api]: Build succeeded
2020-04-20T01:16:44.447430+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-20T01:16:50.175664+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-20T01:16:50.087369+00:00 app[web.1]: internal/modules/cjs/loader.js:983
2020-04-20T01:16:50.087379+00:00 app[web.1]: throw err;
2020-04-20T01:16:50.087379+00:00 app[web.1]: ^
2020-04-20T01:16:50.087380+00:00 app[web.1]: 
2020-04-20T01:16:50.087380+00:00 app[web.1]: Error: Cannot find module 'request-promise'
2020-04-20T01:16:50.087380+00:00 app[web.1]: Require stack:
2020-04-20T01:16:50.087381+00:00 app[web.1]: - /app/server.js
2020-04-20T01:16:50.087382+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
2020-04-20T01:16:50.087382+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:862:27)
2020-04-20T01:16:50.087382+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:1042:19)
2020-04-20T01:16:50.087383+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:77:18)
2020-04-20T01:16:50.087383+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:12:10)
2020-04-20T01:16:50.087384+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1156:30)
2020-04-20T01:16:50.087384+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
2020-04-20T01:16:50.087384+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:1000:32)
2020-04-20T01:16:50.087385+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:899:14)
2020-04-20T01:16:50.087385+00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
2020-04-20T01:16:50.087386+00:00 app[web.1]: at internal/main/run_main_module.js:18:47 {
2020-04-20T01:16:50.087386+00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2020-04-20T01:16:50.087387+00:00 app[web.1]: requireStack: [ '/app/server.js' ]
2020-04-20T01:16:50.087387+00:00 app[web.1]: }
2020-04-20T01:21:53.525467+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-20T01:21:58.716936+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-20T01:21:58.650366+00:00 app[web.1]: internal/modules/cjs/loader.js:983
2020-04-20T01:21:58.650395+00:00 app[web.1]: throw err;
2020-04-20T01:21:58.650395+00:00 app[web.1]: ^
2020-04-20T01:21:58.650395+00:00 app[web.1]: 
2020-04-20T01:21:58.650396+00:00 app[web.1]: Error: Cannot find module 'request-promise'
2020-04-20T01:21:58.650396+00:00 app[web.1]: Require stack:
2020-04-20T01:21:58.650396+00:00 app[web.1]: - /app/server.js
2020-04-20T01:21:58.650397+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
2020-04-20T01:21:58.650397+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:862:27)
2020-04-20T01:21:58.650398+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:1042:19)
2020-04-20T01:21:58.650398+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:77:18)
2020-04-20T01:21:58.650398+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:12:10)
2020-04-20T01:21:58.650399+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1156:30)
2020-04-20T01:21:58.650399+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
2020-04-20T01:21:58.650438+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:1000:32)
2020-04-20T01:21:58.650439+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:899:14)
2020-04-20T01:21:58.650440+00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
2020-04-20T01:21:58.650441+00:00 app[web.1]: at internal/main/run_main_module.js:18:47 {
2020-04-20T01:21:58.650441+00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2020-04-20T01:21:58.650441+00:00 app[web.1]: requireStack: [ '/app/server.js' ]
2020-04-20T01:21:58.650441+00:00 app[web.1]: }

我尝试使用npm install requestnpm install request-promisenpm init“重建”我的 package.json,然后推送到我的 github 存储库,然后将其部署到 heroku,但我得到了同样的错误。

这是我的 server.js 的顶部:

var express = require('express');
var bodyParser = require('body-parser');
var passport = require('passport');
var authJwtController = require('./auth_jwt');
var User = require('./Users');
var Movie = require('./Movies');
var Review = require('./Reviews');
var jwt = require('jsonwebtoken');
var cors = require('cors');
var mongoose = require('mongoose');
const crypto = require("crypto");
var rp = require('request-promise');

这是我的 package.json

{
  "name": "hw4removedforprivacy",
  "version": "1.0.0",
  "description": "week7a",
  "main": "server.js",
  "scripts": {
    "test": "mocha --timeout 10000 --exit",
    "start": "node server.js"
  },
  "author": "removedforprovacy",
  "license": "ISC",
  "dependencies": {
    "bcrypt-nodejs": "0.0.3",
    "body-parser": "^1.18.2",
    "cors": "^2.8.5",
    "express": "^4.16.2",
    "jsonwebtoken": "^8.1.1",
    "mongoose": "^5.0.9",
    "passport": "^0.4.0",
    "passport-http": "^0.3.0",
    "passport-jwt": "^3.0.1",
    "request": "^2.88.2"
  },
  "devDependencies": {
    "chai": "^4.2.0",
    "chai-http": "^4.2.0",
    "dotenv": "^6.2.0",
    "mocha": "^5.2.0",
    "request-promise": "^4.2.5",
    "sinon": "^7.2.2",
    "sinon-mongoose": "^2.2.1"
  },
  "directories": {
    "test": "test"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/blahblaghblaghremovedforprivacy"
  },
  "bugs": {
    "url": "https://github.com/blahblaghblaghremovedforprivacy"
  },
  "homepage": "https://github.com/blahblaghblaghremovedforprivacy"
}

我不知道该怎么做...我很困惑为什么 server.js 在本地运行而不是在 heroku 上运行。提前谢谢你。

【问题讨论】:

    标签: node.js heroku npm crash dependencies


    【解决方案1】:

    你很亲密;但似乎您意外地将您的请求承诺留在了 devDependencies 中。 Request-promise 应该在依赖项中,因为它是您的应用程序工作所需的包。 为了澄清,devDependencies 下的包将在部署前被删除

    Bahram 是对的,你需要做npm install request-promise。你可能做了npm install request-promise --save-dev,结果它保存在你的devDependencies下

    最好将你的 devDependencies 和依赖项分开。您可能会发现这个 Heroku 文档很有帮助 => https://devcenter.heroku.com/changelog-items/1376

    【讨论】:

      【解决方案2】:

      尝试npm i request-promisenpm install request-promise -s,这样它将在你的 package.json 中保存 request-promise。然后尝试部署

      【讨论】:

      • 感谢您的回答。我通过将 package.json 中的依赖项从 devDependencies 移动到 Dependencies 来修复它。我不知道在 package.json 中移动东西是否是一种好习惯,但它确实有效..
      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 2019-05-16
      • 2013-02-04
      • 2018-06-12
      • 2018-05-22
      • 2023-03-14
      • 2019-12-26
      • 2012-05-28
      相关资源
      最近更新 更多