【发布时间】:2023-01-12 02:01:04
【问题描述】:
当通过 firebase deploy 获取 URL --only hosting 并使用它时,它运行良好并打开网站,但是当尝试像这样放置 api/send Url 时:https://*******.web.app/api/send给我这个错误**
在此服务器上找不到请求的 URL。
我尝试在邮递员中发布网址,它显示该错误
**JavaScript 代码**
const functions = require('firebase-functions'); var {google} = require('googleapis'); var MESSAGING_SCOPE = "https://www.googleapis.com/auth/firebase.messaging"; var SCOPES = [MESSAGING_SCOPE]; var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var router = express.Router(); var request = require('request'); app.use(bodyParser.urlencoded({extended:true})); app.use(bodyParser.json()); router.post('/send', function(req, res){ getAccessToken().then(function(access_token){ var title = req.body.title; var body = req.body.body; var token = req.body.token; request.post({ headers:{ Authorization: 'Bearer '+access_token }, url: "https://fcm.googleapis.com/v1/projects/el-ma3sra/messages:send", body: JSON.stringify( { "message":{ "token" : token, "notification" : { "body" : body, "title" : title, } } } ) }, function(error, response, body){ res.end(body); console.log(body); }); }); }); app.use('/api', router); function getAccessToken(){ return new Promise(function(resolve, reject){ var key = require("./service-account.json"); var jwtClient = new google.auth.JWT( key.client_email, null, key.private_key, SCOPES, null ); jwtClient.authorize(function(err, tokens){ if(err){ reject(err); return; } resolve(tokens.access_token); }); }); } exports.api = functions.https.onRequest(app);firebase.json
{ "hosting": { "public": "public", "rewrites":[ { "source":"/api/send", "function":"api" } ], "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] }}
我想解决我的错误
【问题讨论】:
-
你应该在 firebase 控制台中有正确的 url console.firebase.google.com/u/0/project/XXXXXXXXXX/functions
-
尝试删除
router.post('/send', function(req, res) { }中的所有内容,将一些console.log放在那里并检查它是否有效。
标签: javascript node.js express postman