Node.js 14环境下替换Svelte-Kit代码中的??=运算符问题
解决Node.js 14下
??=运算符的语法错误问题 直接替换代码
??=是空值赋值运算符(ES2022特性),Node.js 14不支持该语法,你可以将原代码替换为等价的兼容写法:
写法一(可读性更强)
const component = async () => { // 当component_cache为null或undefined时赋值 if (component_cache == null) { component_cache = (await import('./layout.svelte-32c85b96.mjs')).default; } return component_cache; };
写法二(简洁版)
const component = async () => component_cache = component_cache ?? (await import('./layout.svelte-32c85b96.mjs')).default;
避免手动修改的长期方案
如果这段代码是Svelte-Kit构建自动生成的,手动修改会在下次构建后被覆盖,建议调整Svelte-Kit的构建配置,让它输出兼容Node.js 14的代码:
- 在
svelte.config.js中,修改Vite的构建目标:
这样Vite会自动将ES2022特性转译为Node.js 14支持的语法,无需手动修改生成文件。import adapter from '@sveltejs/adapter-node'; export default { kit: { adapter: adapter(), vite: { build: { target: 'node14' } } } };
内容的提问来源于stack exchange,提问作者codingtuba
相关产品推荐
相关产品推荐

