Nuxt 3 `addServerMiddleware` работает только в разработке, а не в производстве

С@nuxt/proxyеще не готов для Nuxt 3, я украл код и временно использовал свой собственный модуль. К сожалению, прокси работает только в режиме разработки. Как только я создаю и запускаю сервер, прокси отключается. Разбитый до минимума модуль:

      import { addServerMiddleware, defineNuxtModule } from "@nuxt/kit-edge";
import { createProxyMiddleware } from "http-proxy-middleware";

export default defineNuxtModule({
  setup(options, nuxt) {
    addServerMiddleware({
      handler: createProxyMiddleware(
        "/uploads",
        { target: "http://localhost:1337/" }
      ),
    });
  },
});

Соответствующие части моего nuxt.config.jsнаходятся:

      export default defineNuxtConfig({
  buildModules: ["~/modules/proxy"],
  [...]
});

Я также попытался переместить его в modulesвместо:

      export default defineNuxtConfig({
  modules: ["~/modules/proxy"],
  [...]
});

Во время сборки модуль явно запускается, т.к. createProxyMiddlewareвыводит прокси на консоль:

      > nuxi build

Nuxt CLI v3.0.0-27369360.33ebb01                                                                                                                                                                       14:00:06
ℹ [HPM] Proxy created: /uploads  -> http://localhost:1337/                                                                                                                                             14:00:08
ℹ Vite warmed up in 3517ms                                                                                                                                                                             14:00:13
ℹ Client built in 8150ms                                                                                                                                                                               14:00:17
ℹ Building server...                                                                                                                                                                                   14:00:17
✔ Server built in 1899ms                                                                                                                                                                               14:00:19
ℹ Nitro preset is server                                                                                                                                                                               14:00:19
ℹ Cleaning up .output                                                                                                                                                                                  14:00:19
start Generating public...                                                                                                                                                                             14:00:19
✔ Generated public .output/public                                                                                                                                                                      14:00:19
start Building server...                                                                                                                                                                               14:00:19
start Writing server bundle...                                                                                                                                                                         14:00:23
✔ Server built                                                                                                                                                                                         14:00:23
  ├─ .output/server/index.mjs (69.6 kB) (23.7 kB gzip)
  ├─ .output/server/chunks/nitro/static.mjs (11.1 kB) (2.92 kB gzip)
  ├─ .output/server/chunks/index.mjs (392 kB) (90.3 kB gzip)
  ├─ .output/server/chunks/app/vue3.mjs (284 B) (200 B gzip)
  ├─ .output/server/chunks/app/server.mjs (240 kB) (55.2 kB gzip)
  ├─ .output/server/chunks/app/render.mjs (23 kB) (6.41 kB gzip)
  └─ .output/server/chunks/app/client.manifest.mjs (11.4 kB) (1.43 kB gzip)
Σ Total size: 1.68 MB (460 kB gzip)
ℹ You can preview this build using nuxi preview

Но когда я запускаю сервер, прокси не активен. Не имея документации, я предположил addServerMiddlewareбудет работать так же addPLuginиз @nuxt/kitработает. Любые идеи, что я делаю неправильно?

1 ответ

Следуя рецепту пакета http-proxy-middleware для Next.js , я придумал решение:

Определить промежуточное ПО сервера/server/middleware/proxy.ts

      import { createProxyMiddleware } from 'http-proxy-middleware';

const proxyMiddleware = createProxyMiddleware(
  "/uploads",
  { target: "http://localhost:1337/" }
);

export default (req, res) => {
  proxyMiddleware(req, res, (result: unknown) => {
    if (result instanceof Error) {
      throw result;
    }
  });
}

Подробнее о маршрутах сервера Nuxt3


ОБНОВЛЯТЬ

Совместимый с Nuxt3 прокси-модуль
https://github.com/wobsoriano/nuxt-proxy

Другие вопросы по тегам