mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-27 08:02:01 +00:00
fix: generate failure (#5007)
This commit is contained in:
parent
ad6a8cda9a
commit
bcd672f931
@ -1,4 +1,4 @@
|
||||
import { validate, isJS } from './util'
|
||||
import { validate, isJS, extractQueryPartJS } from './util'
|
||||
|
||||
export default class VueSSRServerPlugin {
|
||||
constructor(options = {}) {
|
||||
@ -44,7 +44,12 @@ export default class VueSSRServerPlugin {
|
||||
|
||||
stats.assets.forEach((asset) => {
|
||||
if (isJS(asset.name)) {
|
||||
bundle.files[asset.name] = asset.name
|
||||
const queryPart = extractQueryPartJS(asset.name)
|
||||
if (queryPart !== undefined) {
|
||||
bundle.files[asset.name] = asset.name.replace(queryPart, '')
|
||||
} else {
|
||||
bundle.files[asset.name] = asset.name
|
||||
}
|
||||
} else if (asset.name.match(/\.js\.map$/)) {
|
||||
bundle.maps[asset.name.replace(/\.map$/, '')] = asset.name
|
||||
} else {
|
||||
|
@ -22,6 +22,10 @@ export const validate = (compiler) => {
|
||||
}
|
||||
}
|
||||
|
||||
export const isJS = file => /\.js(\?[^.]+)?$/.test(file)
|
||||
const isJSRegExp = /\.js(\?[^.]+)?$/
|
||||
|
||||
export const isJS = file => isJSRegExp.test(file)
|
||||
|
||||
export const extractQueryPartJS = file => isJSRegExp.exec(file)[1]
|
||||
|
||||
export const isCSS = file => /\.css(\?[^.]+)?$/.test(file)
|
||||
|
3
test/fixtures/filenames-query-part/filenames-query-part.test.js
vendored
Normal file
3
test/fixtures/filenames-query-part/filenames-query-part.test.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import { buildFixture } from '../../utils/build'
|
||||
|
||||
buildFixture('filenames-query-part')
|
8
test/fixtures/filenames-query-part/nuxt.config.js
vendored
Normal file
8
test/fixtures/filenames-query-part/nuxt.config.js
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
export default {
|
||||
build: {
|
||||
filenames: {
|
||||
app: '[name].js?v=[contenthash]',
|
||||
chunk: '[name].js?v=[contenthash]'
|
||||
}
|
||||
}
|
||||
}
|
5
test/fixtures/filenames-query-part/pages/index.vue
vendored
Normal file
5
test/fixtures/filenames-query-part/pages/index.vue
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1>Chunks with version in query part</h1>
|
||||
</div>
|
||||
</template>
|
53
test/unit/filenames-query-part.test.js
Normal file
53
test/unit/filenames-query-part.test.js
Normal file
@ -0,0 +1,53 @@
|
||||
import { resolve } from 'path'
|
||||
import { existsSync, readFileSync } from 'fs'
|
||||
import { getPort, loadFixture, Nuxt } from '../utils'
|
||||
|
||||
let port
|
||||
|
||||
let nuxt = null
|
||||
|
||||
expect.extend({
|
||||
toFileExist(file) {
|
||||
if (existsSync(file)) {
|
||||
return {
|
||||
message: () => `expected '${file}' not exist`,
|
||||
pass: true
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
message: () => `expected '${file}' exist`,
|
||||
pass: false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
describe('build filenames with query part', () => {
|
||||
beforeAll(async () => {
|
||||
const config = await loadFixture('filenames-query-part')
|
||||
nuxt = new Nuxt(config)
|
||||
port = await getPort()
|
||||
await nuxt.server.listen(port, 'localhost')
|
||||
})
|
||||
|
||||
test('server manifest files exist', () => {
|
||||
const manifest = JSON.parse(readFileSync(resolve(__dirname, '..', 'fixtures/filenames-query-part/.nuxt/dist/server/server.manifest.json'), 'utf8'))
|
||||
expect(manifest).toMatchObject({
|
||||
files: expect.any(Object)
|
||||
})
|
||||
for (const file in manifest.files) {
|
||||
expect(resolve(__dirname, '..', `fixtures/filenames-query-part/.nuxt/dist/server/${manifest.files[file]}`)).toFileExist()
|
||||
}
|
||||
})
|
||||
|
||||
test("render / without error 'Cannot find module'", async () => {
|
||||
await expect(nuxt.server.renderRoute('/')).resolves.toMatchObject({
|
||||
html: expect.stringContaining('<h1>Chunks with version in query part</h1>')
|
||||
})
|
||||
})
|
||||
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
afterAll(async () => {
|
||||
await nuxt.close()
|
||||
})
|
||||
})
|
Loading…
Reference in New Issue
Block a user