【问题标题】:Getting "Error: Cannot find module 'request'" even though I have added request module即使我添加了请求模块,也会出现“错误:找不到模块‘请求’”
【发布时间】:2020-01-11 06:41:09
【问题描述】:

我正在尝试将request 用于我的云功能。

我已经通过npm install request 安装了request 包。它像其他所有软件包一样位于node_modules

但是,当我尝试上传我的云函数时,我收到以下错误消息:

Function failed on loading user code. Error message: Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'request'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/srv/index.js:3:17)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

这是我的index.js

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const request = require('request');

admin.initializeApp();
const db = admin.firestore();

function getFoursquarePlace(midPoint){
    let url = "https://api.foursquare.com/v2/venues/search?" +
    "ll=" + midPoint.latitude + "," + midPoint.longitude + "&client_id=" +
    client_id + "&client_secret=" + client_secret + "&v=" + version + "&radius=" + radius 
    + "&limit=" + limit + "&categoryId=" + categorySet;

    request(url, options, (error, res, body) => {
    if (error) {
        return console.log(error)
    }

    if (!error && res.statusCode === 200) {
        // do something with JSON, using the 'body' variable
            console.log("body: " + res.body);
        }
    });

有谁知道可能是什么问题?我已经尝试卸载并重新安装request,但仍然出现错误。

编辑:我检查了package-lock.json 并且request 包在那里:

"request": {
  "version": "2.88.0",
  "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
  "integrity": "sha512-NAqB3rk3LgxdsfHnTBNwN0E+lHDAJzu7m0328eY08z2/A0hg==",
  "requires": {
    "aws-sign2": "~0.7.0",
    "aws4": "^1.8.0",
    "caseless": "~0.12.0",
    "combined-stream": "~1.0.6",
    "extend": "~3.0.2",
    "forever-agent": "~0.6.1",
    "form-data": "~2.3.2",
    "har-validator": "~5.1.0",
    "http-signature": "~1.2.0",
    "is-typedarray": "~1.0.0",
    "isstream": "~0.1.2",
    "json-stringify-safe": "~5.0.1",
    "mime-types": "~2.1.19",
    "oauth-sign": "~0.9.0",
    "performance-now": "^2.1.0",
    "qs": "~6.5.2",
    "safe-buffer": "^5.1.2",
    "tough-cookie": "~2.4.3",
    "tunnel-agent": "^0.6.0",
    "uuid": "^3.3.2"
  }
},

package.json

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^3.1.0",
    "geofirestore": "3.3.1"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.1.6"
  },
  "private": true
}

【问题讨论】:

  • 检查你的 package.json 文件 request 模块是否可用
  • 它在那里,我在我的编辑@prasanth 中添加了确认
  • 检查 package.json 而不是 package lock .json您是否在 package.json 依赖项中列出了所有必需的模块? 您是否看到此错误?
  • 是的,你是对的,它不存在。没有添加的原因有哪些?我是否手动将其添加到文件中? (我在编辑中添加了文件)
  • 再做一次npm install request .check package.json 依赖项

标签: javascript node.js npm google-cloud-functions


【解决方案1】:

当您将依赖项“npm install”到错误的文件夹时,可能会发生这种情况,正如我刚刚意识到的那样。我在“src”子目录中有一个 Vue 项目,在“functions”子目录中有一个 index.js(Firebase 云函数)。

Vue 项目的依赖项必须在主目录中使用“npm install”安装。相反,Firebase 云函数的依赖项必须在“functions”子目录中运行“npm install”来安装。我不小心在主目录中安装了依赖项,并且试图理解为什么它抱怨它找不到依赖项(googleapis),直到我意识到我做了什么。修复当然是将它安装在正确的位置(因此它显示在正确的 package.json 中),然后从错误的位置卸载它以保持整洁。

npm uninstall request //removes the module from node_modules, but not package.json or npm uninstall --save request
npm cache clear --force
npm install --save --save-exact request@2.88.0       
firebase deploy --only functions

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,结果我错过了添加 request@2.88.x 依赖于 package.json 文件,尽管它存在于 devDependencies 中

    如果这不能解决,请尝试运行

    npm 审计修复 --force

    firebase deploy --only 函数

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2019-10-02
      • 2013-05-05
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多