Next.js 通过 <Link> 手动加载页面而没有 Ajax

Next.js Manually Loads Pages via <Link> Without Ajax

我正在使用 Next.js(使用 Redux、react-i18next、样式化组件和 Express)并且 Next.js 在没有 AJAX 的情况下加载我的页面(使用硬加载,没有 in-放置内容替换)。不幸的是,我无法确定问题所在。控制台(浏览器和服务器)没有错误。你们中有人知道如何调试此问题或有关于此问题的有用提示吗?

这是我服务器的代码:

const express = require('express');
const next = require('next');
const {parse} = require('url');
const i18nextMiddleware = require('i18next-express-middleware');
const Backend = require('i18next-node-fs-backend');
const i18n = require('../hoc/i18n');

const port = parseInt(process.env.APP_PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({dev});
const handle = app.getRequestHandler();

// init i18next with server-side settings
// using i18next-express-middleware
i18n.use(Backend).use(i18nextMiddleware.LanguageDetector).init({
  preload: ['en', 'de'],
  ns: ['common', 'home', 'content'],
  backend: {
    loadPath: __dirname + '/../locales/{{lng}}/{{ns}}.json',
    addPath: __dirname + '/../locales/{{lng}}/{{ns}}-missing.json',
    jsonIndent: 2
  }
}, () => {
  app.prepare().then(() => {
    const server = express();

    // Translation routing
    server.use(i18nextMiddleware.handle(i18n));
    server.use('/locales', express.static(__dirname + '/../locales'));
    server.post('/locales/add/:lng/:ns', i18nextMiddleware.missingKeyHandler(i18n));

    // Application Routing
    server.get('*', (req, res) => {
      // Be sure to pass `true` as the second argument to `url.parse`.
      // This tells it to parse the query portion of the URL.
      const parsedUrl = parse(req.url, true);
      const {pathname, query} = parsedUrl;

      if (pathname.startsWith('/_next')) {
        return handle(req, res, parsedUrl);
      } else if (pathname === '/') {
        return app.render(req, res, '/', query);
      } else {
        return app.render(req, res, '/content', query);
      }
    });

    server.listen(port, err => {
      if (err) {
        throw err;
      }
      console.log(`> Application server ready on http://localhost:${port}`);
    });
  })
});

link 本身是用

创建的
<Link href={item.link}>
  <a>
    {item.title}
  </a>
</Link>

即使服务器正确映射动态 URL,客户端仍然必须使用以下 link 语法才能使其工作(特别重要的是 "as" 属性):

<Link href={'/content'} as={'/the-real-url'}>
  <a>Test Link</a>
</Link>