Fix build prod : Pinia CJS default import crash Node 22+
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Pinia résout vers pinia.prod.cjs en production, Rollup convertit
require('vue') en default import ESM invalide. Script post-build
remplace par un namespace import (* as).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
35
scripts/fix-esm-imports.mjs
Normal file
35
scripts/fix-esm-imports.mjs
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Post-build fix: Pinia CJS (pinia.prod.cjs) fait require('vue').
|
||||
* Rollup convertit ça en `import require$$0 from 'vue'` (default import).
|
||||
* Vue 3 n'a pas de default export en ESM → crash Node 22+.
|
||||
*
|
||||
* Ce script remplace le default import par un namespace import valide.
|
||||
*/
|
||||
import { readFileSync, writeFileSync, existsSync } from 'node:fs'
|
||||
|
||||
const file = '.output/server/chunks/build/server.mjs'
|
||||
|
||||
if (!existsSync(file)) {
|
||||
console.log('[fix-esm] server.mjs not found, skipping')
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
let code = readFileSync(file, 'utf-8')
|
||||
|
||||
// Pattern: import require$$0, { defineComponent, inject, ... } from 'vue'
|
||||
// → import * as require$$0 from 'vue'; import { defineComponent, ... } from 'vue'
|
||||
const re = /import\s+(require\$\$\d+)\s*,\s*\{([^}]+)\}\s*from\s*'vue'/g
|
||||
let patched = false
|
||||
|
||||
code = code.replace(re, (match, varName, namedStr) => {
|
||||
patched = true
|
||||
const names = namedStr.split(',').map(n => n.trim()).filter(Boolean)
|
||||
return `import * as ${varName} from 'vue'; import { ${names.join(', ')} } from 'vue'`
|
||||
})
|
||||
|
||||
if (patched) {
|
||||
writeFileSync(file, code)
|
||||
console.log('[fix-esm] Patched default import from vue in server.mjs')
|
||||
} else {
|
||||
console.log('[fix-esm] No default import found, nothing to patch')
|
||||
}
|
||||
Reference in New Issue
Block a user