Skip to content

Commit 648062c

Browse files
authored
fix: correct public path in generation and start (#5202)
1 parent c6565c9 commit 648062c

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

packages/vue-renderer/src/renderer.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import consola from 'consola'
55
import devalue from '@nuxt/devalue'
66
import invert from 'lodash/invert'
77
import template from 'lodash/template'
8-
import { waitFor } from '@nuxt/utils'
8+
import { waitFor, isUrl, urlJoin } from '@nuxt/utils'
99
import { createBundleRenderer } from 'vue-server-renderer'
1010

1111
import SPAMetaRenderer from './spa-meta'
@@ -14,6 +14,9 @@ export default class VueRenderer {
1414
constructor(context) {
1515
this.context = context
1616

17+
const { build: { publicPath }, router: { base } } = this.context.options
18+
this.publicPath = isUrl(publicPath) ? publicPath : urlJoin(base, publicPath)
19+
1720
// Will be set by createRenderer
1821
this.renderer = {
1922
ssr: undefined,
@@ -55,11 +58,11 @@ export default class VueRenderer {
5558

5659
renderScripts(context) {
5760
if (this.context.options.modern === 'client') {
58-
const { publicPath, crossorigin } = this.context.options.build
5961
const scriptPattern = /<script[^>]*?src="([^"]*?)"[^>]*?>[^<]*?<\/script>/g
6062
return context.renderScripts().replace(scriptPattern, (scriptTag, jsFile) => {
61-
const legacyJsFile = jsFile.replace(publicPath, '')
63+
const legacyJsFile = jsFile.replace(this.publicPath, '')
6264
const modernJsFile = this.assetsMapping[legacyJsFile]
65+
const { build: { crossorigin } } = this.context.options
6366
const cors = `${crossorigin ? ` crossorigin="${crossorigin}"` : ''}`
6467
const moduleTag = modernJsFile
6568
? scriptTag
@@ -95,14 +98,14 @@ export default class VueRenderer {
9598

9699
renderSsrResourceHints(context) {
97100
if (this.context.options.modern === 'client') {
98-
const { publicPath, crossorigin } = this.context.options.build
99101
const linkPattern = /<link[^>]*?href="([^"]*?)"[^>]*?as="script"[^>]*?>/g
100102
return context.renderResourceHints().replace(linkPattern, (linkTag, jsFile) => {
101-
const legacyJsFile = jsFile.replace(publicPath, '')
103+
const legacyJsFile = jsFile.replace(this.publicPath, '')
102104
const modernJsFile = this.assetsMapping[legacyJsFile]
103105
if (!modernJsFile) {
104106
return ''
105107
}
108+
const { crossorigin } = this.context.options.build
106109
const cors = `${crossorigin ? ` crossorigin="${crossorigin}"` : ''}`
107110
return linkTag.replace('rel="preload"', `rel="modulepreload"${cors}`).replace(legacyJsFile, modernJsFile)
108111
})

0 commit comments

Comments
 (0)