Skip to content

Commit 4d4e881

Browse files
committed
fix: middleware path
1 parent 21782ef commit 4d4e881

File tree

4 files changed

+37
-19
lines changed

4 files changed

+37
-19
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
"@nuxt/kit": "^3.0.0-rc.3",
4444
"dedent": "^0.7.0",
4545
"defu": "^6.0.0",
46-
"h3": "^0.7.9",
47-
"http-proxy-middleware": "^3.0.0-beta.0"
46+
"http-proxy-middleware": "^3.0.0-beta.0",
47+
"pathe": "^0.3.0"
4848
},
4949
"devDependencies": {
5050
"@antfu/eslint-config": "^0.23.1",

pnpm-lock.yaml

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/module.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import { addTemplate, defineNuxtModule, useLogger } from '@nuxt/kit'
1+
import { fileURLToPath } from 'url'
2+
import { addServerHandler, addTemplate, defineNuxtModule, useLogger } from '@nuxt/kit'
23
import type { Options } from 'http-proxy-middleware'
4+
import { join } from 'pathe'
35
import { defu } from 'defu'
46
// @ts-expect-error: No types
57
import dedent from 'dedent'
@@ -16,17 +18,27 @@ export default defineNuxtModule<Options>({
1618
changeOrigin: true,
1719
},
1820
setup(options, nuxt) {
21+
const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
22+
nuxt.options.build.transpile.push(runtimeDir, '#build/proxy-handler')
23+
24+
const handlerPath = join(nuxt.options.buildDir, 'proxy-handler.ts')
25+
1926
// Final resolved configuration
2027
const finalConfig = nuxt.options.runtimeConfig.proxy = defu(nuxt.options.runtimeConfig.proxy, {
2128
logger: options.logger,
2229
changeOrigin: options.changeOrigin,
2330
})
2431

32+
addServerHandler({
33+
handler: handlerPath,
34+
middleware: true,
35+
})
36+
2537
addTemplate({
26-
src: 'proxyMiddleware.mjs',
38+
src: 'proxy-handler.ts',
2739
write: true,
2840
getContents: () => dedent`
29-
import { createProxyMiddleware } from 'http-proxy-middleware'
41+
import createProxyMiddleware from '#build/proxy-handler'
3042
3143
export default createProxyMiddleware(${finalConfig})
3244
`,

src/runtime/server.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
// ~/server/middleware/proxy.ts
2-
import { defineEventHandler } from 'h3'
3-
// @ts-expect-error: Resolved by Nuxt
4-
import apiProxyMiddleware from '#build/proxyMiddleware.mjs'
1+
import type { Options } from 'http-proxy-middleware'
2+
import { createProxyMiddleware as _createProxyMiddleware } from 'http-proxy-middleware'
53

6-
export default defineEventHandler(async (event) => {
7-
await new Promise((resolve, reject) => {
8-
apiProxyMiddleware(event.req, event.res, (err?: unknown) => {
9-
if (err)
10-
reject(err)
11-
else
12-
resolve(true)
4+
export default function createProxyMiddleware(options: Options) {
5+
const proxyMiddleware = _createProxyMiddleware(options)
6+
7+
// @ts-expect-error: Resolved by Nuxt
8+
return defineEventHandler(async (event) => {
9+
await new Promise((resolve, reject) => {
10+
proxyMiddleware(event.req, event.res, (err?: unknown) => {
11+
if (err)
12+
reject(err)
13+
else
14+
resolve(true)
15+
})
1316
})
1417
})
15-
})
18+
}

0 commit comments

Comments
 (0)