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中未列出的模块,则代码将失败.
我有同样的问题,并修复了安装,请求和请求承诺.转到功能所在的目录并执行:
npm install --save request request-promise
Run Code Online (Sandbox Code Playgroud)
--save将负责更新您的package.json.然后重新部署,它应该工作.
它无法找到 request-promise,因为它没有安装。它与 firebase 是分开的,所以你需要将它添加到你的 package.json 中。我还会添加请求库。
在依赖项中添加以下两行并运行 npm install。
"request": "^2.x",
"request-promise": "^1.x"
Run Code Online (Sandbox Code Playgroud)