最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Getting "Error: Cannot find module 'request'" even though I have added request mo

programmeradmin0浏览0评论

I am trying to use request for my Cloud Function.

I have installed request package via npm install request. It sits in node_modules like every other package:

However when I try to upload my Cloud Function, I get the following error message:

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._pile (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)

Here's my 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 = "?" +
    "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);
        }
    });

Does anyone know what the problem may be? I've tried uninstalling and reinstalling request but still getting the error.

Edit: I've checked package-lock.json and the request package is in there:

"request": {
  "version": "2.88.0",
  "resolved": ".88.0.tgz",
  "integrity": "sha512-NAqB3rk3LgxdsfHnTBNwN0E+lHDAJzu7m0328eY08z2/A0hg==",
  "requires": {
    "aws-sign2": "~0.7.0",
    "aws4": "^1.8.0",
    "caseless": "~0.12.0",
    "bined-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
}

I am trying to use request for my Cloud Function.

I have installed request package via npm install request. It sits in node_modules like every other package:

However when I try to upload my Cloud Function, I get the following error message:

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._pile (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)

Here's my 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./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);
        }
    });

Does anyone know what the problem may be? I've tried uninstalling and reinstalling request but still getting the error.

Edit: I've checked package-lock.json and the request package is in there:

"request": {
  "version": "2.88.0",
  "resolved": "https://registry.npmjs/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",
    "bined-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
}
Share Improve this question edited Jan 11, 2020 at 6:56 Zorgan asked Jan 11, 2020 at 6:41 ZorganZorgan 9,21331 gold badges120 silver badges239 bronze badges 7
  • check your package.json file request module are available – prasanth Commented Jan 11, 2020 at 6:42
  • It is there, I've added confirmation in my edit @prasanth – Zorgan Commented Jan 11, 2020 at 6:49
  • Check package.json instead of package lock .json . Did you list all required modules in the package.json dependencies? Did you see this error ? – prasanth Commented Jan 11, 2020 at 6:54
  • Yes you're right, it's not there. Any reason why it wasn't added? Do I manually add it to the file? (i've added the file in my edit) – Zorgan Commented Jan 11, 2020 at 6:56
  • do again npm install request .check the package.json dependencies – prasanth Commented Jan 11, 2020 at 6:59
 |  Show 2 more ments

2 Answers 2

Reset to default 4

This can happen when you "npm install" a dependency to the wrong folder, as I have just realised I did. I have a Vue project in the "src" subdirectory, and an index.js (Firebase cloud function) in the "functions" subdirectory.

Dependencies of the Vue project must be installed with "npm install" in the main directory. In contrast, dependencies of the Firebase cloud function must be installed with "npm install" being run in the "functions" subdirectory. I had accidentally installed the dependency in the main directory, and was breaking my head trying to understand why it was plaining that it couldn't find the dependency (googleapis) until I realised what I had done. The fix was of course to install it in the right place (so it showed up in the right package.json), and uninstall it from the wrong place for neatness.

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 [email protected]       
firebase deploy --only functions

I was facing the same issue , it turned I was missing to add [email protected] in dependency in package.json file though it was present in devDependencies

In case this doesn't resolve try running

npm audit fix --force

firebase deploy --only functions

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论