Как загрузить статический контент с правильного URL? - PullRequest
0 голосов
/ 22 мая 2019

По умолчанию, если библиотека i18n используется без библиотеки next-routs, независимо от того, какой язык используется, я имею в виду, что URL имеют префикс, например http://localhost:8080/some-path или http://localhost:8080/de/some-path. В этом случае статический контент загружается постоянно с http://localhost:8080/static/font/whatever.woff. А если при добавлении следующего маршрута и использовании одних и тех же URL-адресов статический контент загружается с http://localhost:8080/de/static/font/whatever.woff. Проблема в том, что я использую Varnish, и не рекомендуется добавлять правила URL

Это сервер Linux 18.04 с Varnish и nginx.

код узла.js:

const express = require('express');
const cookieParser = require('cookie-parser');
const next = require('next');
const nextI18NextMiddleware = require('next-i18next/middleware');
const compression = require('compression');
const helmet = require('helmet');
const path = require('path');

const nextI18next = require('./i18n');
const routes = require('./routes');

const port = process.env.PORT || 3000;
const app = next({ dev: process.env.NODE_ENV !== 'production' });
const handler = routes.getRequestHandler(app);

(async () => {
  await app.prepare();
  const server = express();

  server.use(helmet());
  server.use(cookieParser());
  server.use(compression());
  server.use(nextI18NextMiddleware(nextI18next));
  server.use(handler);

  server.get('/service-worker.js', (req, res) =>
    app.serveStatic(req, res, path.join(__dirname, '.next', '/service-worker.js')),
  );

  await server.listen(port);
  console.log(`> Ready on http://localhost:${port}`);
})();

Я ожидаю, что ресурсы, встроенные в javascript, будут загружаться всегда, например, с. http://localhost:8080/static/font URl независимо от выбранного языка в приложении.

...