Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点JS在firebse主机中解析路由_Javascript_Node.js_Google Cloud Functions_Firebase Hosting - Fatal编程技术网

Javascript 使用节点JS在firebse主机中解析路由

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

我想使用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('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文件中。幸运的是,我找到了解决办法。谢谢你的帮助。解决方案链接:很高兴你找到了答案。你现在可以删除这个问题,或者用你自己的答案回答它吗?