mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-18 06:31:27 +00:00
fix(vite): add additional before skipping vite transform (#10120)
This commit is contained in:
parent
5d069a93ce
commit
1e8da22893
@ -130,11 +130,17 @@ export async function buildClient (ctx: ViteBuildContext) {
|
|||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const viteMiddleware = defineEventHandler(async (event) => {
|
const viteMiddleware = defineEventHandler(async (event) => {
|
||||||
// Workaround: vite devmiddleware modifies req.url
|
// Workaround: vite devmiddleware modifies req.url
|
||||||
const originalURL = event.node.req.url!
|
const originalURL = event.node.req.url!
|
||||||
|
|
||||||
|
const viteRoutes = viteServer.middlewares.stack.map(m => m.route).filter(r => r.length > 1)
|
||||||
|
if (!originalURL.startsWith(clientConfig.base!) && !viteRoutes.some(route => originalURL.startsWith(route))) {
|
||||||
// @ts-expect-error _skip_transform is a private property
|
// @ts-expect-error _skip_transform is a private property
|
||||||
event.node.req._skip_transform = !originalURL.startsWith(clientConfig.base!)
|
event.node.req._skip_transform = true
|
||||||
|
}
|
||||||
|
|
||||||
await new Promise((resolve, reject) => {
|
await new Promise((resolve, reject) => {
|
||||||
viteServer.middlewares.handle(event.node.req, event.node.res, (err: Error) => {
|
viteServer.middlewares.handle(event.node.req, event.node.res, (err: Error) => {
|
||||||
event.node.req.url = originalURL
|
event.node.req.url = originalURL
|
||||||
|
@ -894,6 +894,16 @@ describe('component islands', () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe.runIf(process.env.NUXT_TEST_DEV && !process.env.TEST_WITH_WEBPACK)('vite plugins', () => {
|
||||||
|
it('does not override vite plugins', async () => {
|
||||||
|
expect(await $fetch('/vite-plugin-without-path')).toBe('vite-plugin without path')
|
||||||
|
expect(await $fetch('/__nuxt-test')).toBe('vite-plugin with __nuxt prefix')
|
||||||
|
})
|
||||||
|
it('does not allow direct access to nuxt source folder', async () => {
|
||||||
|
expect(await $fetch('/app.config')).toContain('404')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe.skipIf(process.env.NUXT_TEST_DEV || isWindows)('payload rendering', () => {
|
describe.skipIf(process.env.NUXT_TEST_DEV || isWindows)('payload rendering', () => {
|
||||||
it('renders a payload', async () => {
|
it('renders a payload', async () => {
|
||||||
const payload = await $fetch('/random/a/_payload.js', { responseType: 'text' })
|
const payload = await $fetch('/random/a/_payload.js', { responseType: 'text' })
|
||||||
|
22
test/fixtures/basic/nuxt.config.ts
vendored
22
test/fixtures/basic/nuxt.config.ts
vendored
@ -100,6 +100,28 @@ export default defineNuxtConfig({
|
|||||||
export: 'namedExport',
|
export: 'namedExport',
|
||||||
filePath: '~/other-components-folder/named-export'
|
filePath: '~/other-components-folder/named-export'
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
'vite:extendConfig' (config) {
|
||||||
|
config.plugins!.push({
|
||||||
|
name: 'nuxt:server',
|
||||||
|
configureServer (server) {
|
||||||
|
server.middlewares.use((req, res, next) => {
|
||||||
|
if (req.url === '/vite-plugin-without-path') {
|
||||||
|
res.end('vite-plugin without path')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
|
||||||
|
server.middlewares.use((req, res, next) => {
|
||||||
|
if (req.url === '/__nuxt-test') {
|
||||||
|
res.end('vite-plugin with __nuxt prefix')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
experimental: {
|
experimental: {
|
||||||
|
Loading…
Reference in New Issue
Block a user