You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将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的版本,比如:
    export default defineConfig({
      target: 'es2020', // es2020及以上版本原生支持import.meta.url
      // 其他配置...
    })
    
    要是你之前没设置这些,esbuild 0.24.1的默认配置可能自动切换到了CommonJS格式,自然就不认识ESM的语法了。

阻止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

火山引擎 最新活动