gpt4 book ai didi

express - 未提供 `public` 文件夹内的静态文件(使用 ExpressJS 的 NextJS 自定义服务器)

转载 作者:行者123 更新时间:2023-12-04 10:38:22 30 4
gpt4 key购买 nike

我正在处理 NextJS应用程序。我已经使用 ExpressJS 制作了一个自定义服务器.问题是当我使用自定义服务器运行应用程序时,应用程序无法在 public 中找到静态文件。文件夹。

Note: I don't have any problem When I run the app using 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}`);
});
});

最佳答案

这是因为您没有在没有匹配项时实现回退:

server.all('*', async (req, res) => {
return handle(req, res);
}

将为您处理所有其他路由(API 路由、公共(public)/静态文件夹等)。

关于express - 未提供 `public` 文件夹内的静态文件(使用 ExpressJS 的 NextJS 自定义服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051665/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com