Javascript 使用节点JS在firebse主机中解析路由
我想使用Node js在firebase主机中分离/创建路由。我创建了两个JS文件:apiservice.JS和service.JS,其中包含firebase云函数 apiservice.js文件包含与API请求相关的路由。 service.js文件包含与正常使用请求相关的路由。 运行此代码时,出现以下错误: 无法获取/firebaseproject id/us-central1/app/api/ 代码如下: apiservice.js:Javascript 使用节点JS在firebse主机中解析路由,javascript,node.js,google-cloud-functions,firebase-hosting,Javascript,Node.js,Google Cloud Functions,Firebase Hosting,我想使用Node js在firebase主机中分离/创建路由。我创建了两个JS文件:apiservice.JS和service.JS,其中包含firebase云函数 apiservice.js文件包含与API请求相关的路由。 service.js文件包含与正常使用请求相关的路由。 运行此代码时,出现以下错误: 无法获取/firebaseproject id/us-central1/app/api/ 代码如下: apiservice.js: const functions = require('f
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
service.js:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
firebase.json:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
任何帮助都将不胜感激。谢谢。我找到了解决办法。我没有导入index.js文件中的apiservice和service。因此,路由不起作用。因此,我稍微修改了代码,并在index.js文件中添加了几行代码。我从这里得到了参考: 因此,更新后的工作代码为: apiservice.js:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
service.js:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
index.js:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
firebase.json:
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
//code
});
app.get("/api/signup", (req, res) => {
//code
});
exports.apiservice = functions.https.onRequest(app);
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
//code
});
app.get("/login", (req, res) => {
//code
});
exports.service = functions.https.onRequest(app);
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/api",
"function": "apiservice"
},
{
"source": "/",
"function": "service"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
const functions = require('firebase-functions');
const express = require("express");
let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
//Code
});
module.exports = apirouter;
const functions = require('firebase-functions');
const express = require("express");
let router = express.Router();
apirouter.get("/signup", (req, res) => {
//Code
});
module.exports = router;
const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");
let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);
module.exports = {
'apisrcrouter': functions.https.onRequest(apisrcrouter),
'srcrouter': functions.https.onRequest(srcrouter)
};
{
"hosting": {
...
"rewrites": [
{
"source": "/api/**",
"function": "apisrcrouter"
},
{
"source": "/**",
"function": "srcrouter"
}]
...
}
您是如何部署该代码的?通常,只有一个index.js导出项目的所有函数。这些导出是唯一可以作为重写目标的内容。酷。我应该如何编写代码,使这两个文件都包含单独的api代码和正常使用的代码,我只需要将它们添加到index.js文件中?听起来您需要提出一个全新的问题来解释您现在要做的事情。是的。你说得对。事实上,我问的问题是错误的。我想在不同的JS文件中分离路由,并将它们合并到index.JS文件中。幸运的是,我找到了解决办法。谢谢你的帮助。解决方案链接:很高兴你找到了答案。你现在可以删除这个问题,或者用你自己的答案回答它吗?