首页 > 解决方案 > 防止从 pages 文件夹中的组件和公用文件夹创建路由。并拒绝访问查看公用文件夹中的文件。NextJs

问题描述

我有一个带有自定义服务器的 NextJs 应用程序,我在其中自定义了一条路线。我根据主机名和路径名显示模板的位置。

我的 server.js

const next = require('next');
const { createServer } = require('http');
const { parse } = require('url');
const dev = process.env.ENV === 'local';
const app = next({ dev });
const handle = app.getRequestHandler();

const port = 3000;

app.prepare().then(() => {
  createServer(async (req, res) => {
    const parsedUrl = parse(req.url, true);
    const { pathname, query } = parsedUrl;

    const pathnameFromServer = 'test_path_name';
    const templateFromServer = 'template1';

    if (pathname === `/${pathnameFromServer}`) {
      await app.render(req, res, `/${templateFromServer}`, query);
    } else {
      await handle(req, res, parsedUrl);
    }
  }).listen(port, (err) => {
    if (err) throw err;
    console.log('> Ready on http://localhost:3000');
  });
});

我正在页面文件夹中创建一个模板。我想在其中创建组件,公用文件夹。像这样。

在此处输入图像描述

但是 NextJs 将 pages 文件夹中的所有内容构建为路由。

我的 next.config.js

const withTM = require('next-transpile-modules')(['@nfs-react/components']);

module.exports = withTM({
  useFileSystemPublicRoutes: false,
});

我需要防止从页面文件夹中的组件和公用文件夹创建路由。我还需要拒绝访问以查看公用文件夹中的文件。

标签: javascriptnode.jsreactjsexpressnext.js

解决方案


您可以将/pages文件夹命名为其他名称,因此 Next.js 将忽略它。


推荐阅读