将ESBuild从0.24.0升级到0.24.1时出现异常错误
将ESBuild从0.24.0升级到0.24.1时出现异常错误
看起来你碰到了两个关联的问题:一是升级esbuild到0.24.1后出现的import.meta.url语法错误,二是如何阻止pnpm自动把esbuild更到这个有问题的版本。我来给你一步步梳理解决办法:
先修复当前的语法错误
你看到的Expected identifier but found "import"错误,本质是esbuild 0.24.1的配置逻辑有变化,导致import.meta.url这个ESM专属语法没被正确识别。可以从这几个方向调整:
- 检查你的tsup配置文件(比如
tsup.config.ts),确保明确设置了ESM输出格式:import { defineConfig } from 'tsup' export default defineConfig({ format: ['esm'], // 明确指定输出ESM格式 // 其他配置... }) - 如果你的项目需要兼容旧环境,记得把目标环境设置为支持
import.meta.url的版本,比如:
要是你之前没设置这些,esbuild 0.24.1的默认配置可能自动切换到了CommonJS格式,自然就不认识ESM的语法了。export default defineConfig({ target: 'es2020', // es2020及以上版本原生支持import.meta.url // 其他配置... })
阻止pnpm自动升级esbuild
要让pnpm update --latest -r不升级esbuild,最稳妥的方式是用pnpm的版本覆盖功能:
- 如果你是单项目,在根目录的
package.json里添加以下配置:"pnpm": { "overrides": { "esbuild": "0.24.0" } } - 要是你用的是turborepo这种monorepo结构,把这段配置放在根目录的
package.json里,就能全局生效,所有子包依赖的esbuild都会被强制锁定在0.24.0版本。
这个overrides字段是pnpm的核心功能,不管你跑什么更新命令,它都会强制使用你指定的版本,完全不用担心意外升级。
备注:内容来源于stack exchange,提问作者Mayank Kumar Chaudhari




