Firebase:解析触发器时出错:无法找到模块'request-promise'简单云功能

nea*_*lag 8 javascript firebase npm-request

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

我按照简单的你好世界的例子,没关系.

一旦我添加了Google样本中声明的请求承诺模块(来自翻译和来自网址缩短示例),我无法继续前进.因为这会产生.

Error parsing triggers: Cannot find module 'request-promise'
Run Code Online (Sandbox Code Playgroud)

使用'request'模块进行测试,结果相同.

我的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);
});
Run Code Online (Sandbox Code Playgroud)

现在没有 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
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助.

Dou*_*son 14

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

  • request-promise不是Firebase的一部分.你几乎可以使用任何npm模块,它们都来自不同的地方. (2认同)

sat*_*nas 9

我有同样的问题,并修复了安装,请求请求承诺.转到功能所在的目录并执行:

npm install --save request request-promise
Run Code Online (Sandbox Code Playgroud)

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


Jer*_*iah 6

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

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

  "request": "^2.x",
  "request-promise": "^1.x"
Run Code Online (Sandbox Code Playgroud)