我想使用NextJS和firebase云功能,我正在创建一个云功能:
import * as functions from 'firebase-functions';
import cors from 'cors';
import express from 'express';
import next from 'next';
const nextApp = next({ dev: false });
const handle = nextApp.getRequestHandler();
nextApp
.prepare()
.then(() => {
const server = express();
server.use(cors({ origin: true }));
server.get('/a', (req, res) => {
return nextApp.render(req, res, '/b', req.query);
});
server.get('/b', (req, res) => {
return nextApp.render(req, res, '/a', req.query);
});
server.get('*', (req, res) => {
return handle(req, res);
});
})
.catch(ex => {
console.error(ex.stack);
process.exit(1);
});
export let app = functions.https.onRequest(nextApp);
NextJS使用我的JS应用程序的构建创建一个文件夹。
问题是我无法在云上上传NextJS构建文件夹。 我怎么能包含这个文件夹?
GitHub问题=> https://github.com/zeit/next.js/issues/2017
答案 0 :(得分:1)
我必须将firebase deploy
运行到functions
目录而不是root
。
这里我的repo => https://github.com/sarovin/next-firebase-functions
答案 1 :(得分:0)
Firebase目前无视上传云功能中的隐藏文件。已合并PR来解决此问题,但我相信此时仍未发布。
一旦您对此进行了排序,您会发现在云功能上托管Next.js会遇到许多其他问题。例如,JS捆绑包存储在/_next/
路由中,除非您使用正确的Firebase托管重写规则,否则无法访问它们。
我已经写了a blog post,其中涵盖了我在使用Next.js处理云功能时发现的所有问题和警告。