即使我添加了请求模块,也出现“错误:找不到模块'请求'”

时间:2020-01-11 06:41:09

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

我正在尝试将request用于我的Cloud Function。

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

enter image description here

但是,当我尝试上传Cloud Function时,出现以下错误消息:

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
}

2 个答案:

答案 0 :(得分:3)

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

必须在主目录中使用“ npm install”安装Vue项目的依赖项。相反,必须在“功能”子目录中运行“ npm install”的情况下安装Firebase云功能的依赖项。我不小心在主目录中安装了依赖项,并且试图弄明白为什么它抱怨直到我意识到自己做不到,才抱怨找不到依赖项(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

答案 1 :(得分:0)

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

package.json

如果这不能解决尝试运行

npm 审计修复 --force

firebase deploy --only 功能