我正在开发NextJS
应用。我使用ExpressJS
制作了一个自定义服务器。问题是,当我使用自定义服务器运行该应用程序时,该应用程序无法在public
文件夹内找到静态文件。
注意:我使用
运行应用程序时没有任何问题next dev
我的服务器
const express = require('express');
const next = require('next');
const path = require('path');
const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
const prefix = (path = '') => `/:lang(en|tr)?`.concat(path);
app.prepare().then(() => {
const server = express();
server.get(prefix('/'), (req, res) => app.render(req, res, '/', req.query));
server.get(prefix('/agency'), (req, res) => app.render(req, res, '/agency', req.query));
server.get(prefix('/cases'), (req, res) => app.render(req, res, '/cases', req.query));
server.get(prefix('/blog'), (req, res) => app.render(req, res, '/blog', req.query));
server.get(prefix('/contact'), (req, res) => app.render(req, res, '/contact', req.query));
server.get(prefix('/image.png'), (req, res) => app.render(req, res, '/public/images/avatar01.jpg', req.query));
server.listen(port, err => {
if (err) throw err;
console.log(`> Ready on http://localhost:${port}`);
});
});
答案 0 :(得分:1)
这是因为您没有在没有匹配项时实施回退:
server.all('*', async (req, res) => {
return handle(req, res);
}
将为您处理所有其他路由(API路由,公用/静态文件夹等)。