fix: dereference node_modules symlink in runtime build

This commit is contained in:
john
2026-06-27 18:19:13 +08:00
parent 0a79a99df9
commit 58d824f5e5
+5 -4
View File
@@ -138,14 +138,15 @@ async function copyNodeModules() {
if (!(await exists(nodeModulesDir))) { if (!(await exists(nodeModulesDir))) {
throw new Error(`缺少 node_modules 目录: ${nodeModulesDir}`); throw new Error(`缺少 node_modules 目录: ${nodeModulesDir}`);
} }
const resolvedNodeModulesDir = await fs.realpath(nodeModulesDir);
console.log('==> 拷贝生产运行依赖 node_modules'); console.log('==> 拷贝生产运行依赖 node_modules');
await copyDir(nodeModulesDir, path.join(runtimeRoot, 'node_modules')); await copyDir(resolvedNodeModulesDir, path.join(runtimeRoot, 'node_modules'));
await rewriteNodeModulesSymlinks(path.join(runtimeRoot, 'node_modules')); await rewriteNodeModulesSymlinks(path.join(runtimeRoot, 'node_modules'), resolvedNodeModulesDir);
} }
async function rewriteNodeModulesSymlinks(runtimeNodeModulesDir) { async function rewriteNodeModulesSymlinks(runtimeNodeModulesDir, sourceNodeModulesDir) {
console.log('==> 重写 node_modules 顶层符号链接为 runtime 内相对路径'); console.log('==> 重写 node_modules 顶层符号链接为 runtime 内相对路径');
const localNodeModulesRoot = `${nodeModulesDir}${path.sep}`; const localNodeModulesRoot = `${sourceNodeModulesDir}${path.sep}`;
async function visit(dir) { async function visit(dir) {
const entries = await fs.readdir(dir); const entries = await fs.readdir(dir);