14

想要为移动站点实现仅使用 firebase 的方法,因此我决定为我的应用程序创建一个简单的 API 网关,因此我调用云函数端点而不是调用我的外部 API 并公开我的 api 密钥。

我遵循了简单的 hello world 示例并且没问题。

一旦我添加了 Google 示例中所述的 request-promise 模块(来自翻译和 url Shortening 示例),我就无法继续前进。因为这会出现。

Error parsing triggers: Cannot find module 'request-promise'

使用“请求”模块进行测试,结果相同。

我的 index.js 真的很简单

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const request = require('request-promise');

// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

exports.wxData = functions.https.onRequest((request, response) => {
 wwurl = "https://mycurrentendpoint.com/apicall.php?key=1234567890&lat="+request.query.lat+"&lon="+request.query.lon;   
 response.send(wwurl);
});

现在没有 const request = require('request-promise'); const request = require('request'); 它部署好并显示要调用的 url。

真的不知道该怎么办,我已经测试过创建一个新项目并发出这个

这是我的 package.json 内容:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase experimental:functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "firebase-admin": "~5.4.2",
    "firebase-functions": "^0.7.1"
  },
  "private": true
}

在 Firebase 云功能中实现这一点很难吗?

谢谢你的帮助。

4

5 回答 5

32

如果您想在 Cloud Function 中使用 npm 模块,请到cd函数目录并运行命令npm install request-promise或任何模块名称。这会将模块添加到您的 package.json 文件中。然后,当您运行时firebase deploy,该模块将可供您在 Google 云中运行的代码使用。如果您尝试使用 package.json 中未列出的模块,您的代码将失败。

于 2017-11-12T05:49:52.903 回答
19

我遇到了同样的问题并修复了它,同时安装了requestrequest-promise。转到您的函数所在的目录并执行:

npm install --save request request-promise

--save 将负责更新您的 package.json。然后重新部署,它应该可以工作。

于 2018-01-31T08:59:38.940 回答
6

它无法找到 request-promise 因为它没有安装。它与 firebase 是分开的,因此您需要将其添加到您的 package.json 中。我还会添加请求库。

在依赖项中添加以下两行并运行 npm install。

  "request": "^2.x",
  "request-promise": "^1.x"
于 2017-11-12T04:47:43.980 回答
1

第一次更改目录
1)cd functions

接下来安装 npm pack
2) npm install request-promise//对我不起作用,但你可以试试。
3)npm i child-process-promise//为我工作得很好!
子进程承诺 npm 包链接

最后你可以运行:
4)firebase deploy

于 2019-08-01T09:48:02.263 回答
-1

不要错过将 prod 依赖项放在 dependencies 键中,而不是在 package.json 中的 devDependencies

于 2020-10-22T19:07:56.400 回答