ESBuild安装后安装失败,安装Vite



我使用Vite作为Nodejs项目的捆绑器。第一次安装Vite时,一切正常。但是当我试图再次安装其他软件包时,我遇到了以下错误:

node_modules/esbuild postinstall$ node install.js
│ node:internal/errors:867
│   const err = new Error(message);
│               ^
│ Error: Command failed: /usr/local/bin/node /Volumes/Data/Develop/waterial-react/node_modules/esbuild/bin/esbuild --version
│ /Volumes/Data/Develop/waterial-react/node_modules/esbuild/bin/esbuild:1
│ ����
│ SyntaxError: Invalid or unexpected token
│     at internalCompileFunction (node:internal/vm:73:18)
│     at wrapSafe (node:internal/modules/cjs/loader:1159:20)
│     at Module._compile (node:internal/modules/cjs/loader:1203:27)
│     at Module._extensions..js (node:internal/modules/cjs/loader:1293:10)
│     at Module.load (node:internal/modules/cjs/loader:1096:32)
│     at Module._load (node:internal/modules/cjs/loader:935:12)
│     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:84:12)
│     at node:internal/main/run_main_module:23:47
│ Node.js v19.4.0
│     at checkExecSyncError (node:child_process:885:11)
│     at Object.execFileSync (node:child_process:921:15)
│     at validateBinaryVersion (/Volumes/Data/Develop/waterial-react/node_modules/esbuild/install.js:96:28)
│     at /Volumes/Data/Develop/waterial-react/node_modules/esbuild/install.js:281:5 {
│   status: 1,
│   signal: null,
│   output: [
│     null,
│     Buffer(0) [Uint8Array] [],
│     Buffer(662) [Uint8Array] [
│        47,  86, 111, 108, 117, 109, 101, 115,  47,  68,  97, 116,
│        97,  47,  68, 101, 118, 101, 108, 111, 112,  47, 119,  97,
│       116, 101, 114, 105,  97, 108,  45, 114, 101,  97,  99, 116,
│        47, 110, 111, 100, 101,  95, 109, 111, 100, 117, 108, 101,
│       115,  47, 101, 115,  98, 117, 105, 108, 100,  47,  98, 105,
│       110,  47, 101, 115,  98, 117, 105, 108, 100,  58,  49,  10,
│       239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189,
│         7,  10,  10,  10,  83, 121, 110, 116,  97, 120,  69, 114,
│       114, 111, 114,  58,
│       ... 562 more items
│     ]
│   ],
│   pid: 8362,
│   stdout: Buffer(0) [Uint8Array] [],
│   stderr: Buffer(662) [Uint8Array] [
│      47,  86, 111, 108, 117, 109, 101, 115,  47,  68,  97, 116,
│      97,  47,  68, 101, 118, 101, 108, 111, 112,  47, 119,  97,
│     116, 101, 114, 105,  97, 108,  45, 114, 101,  97,  99, 116,
│      47, 110, 111, 100, 101,  95, 109, 111, 100, 117, 108, 101,
│     115,  47, 101, 115,  98, 117, 105, 108, 100,  47,  98, 105,
│     110,  47, 101, 115,  98, 117, 105, 108, 100,  58,  49,  10,
│     239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189,
│       7,  10,  10,  10,  83, 121, 110, 116,  97, 120,  69, 114,
│     114, 111, 114,  58,
│     ... 562 more items
│   ]
│ }
│ Node.js v19.4.0
└─ Failed in 1.3s at /Volumes/Data/Develop/waterial-react/node_modules/esbuild
 ELIFECYCLE  Command failed with exit code 1.

我使用pnpm作为包管理器。我发现问题esbuild #1703, #1953和#1711可能与此有关,但没有多大帮助。我已经尝试将Node.js更新为v19.4.0,但没有帮助。

我正在使用pnpm的故事书,这需要以下.npmrc:

auto-install-peers=true
legacy-peer-deps=true
node-linker=hoisted
ignore-workspace-root-check=true

我不知道这是否导致了这个问题。我试图删除node_modules并再次进行干净安装,它工作了。但我想知道是否有一个解决方案来解决这个问题完全没有删除node_modules每次我安装的东西。

我使用vite@^4.0.4(最新)和pnpm@7.25.0(也是最新)。

提前感谢!

我得到了同样的错误,并通过运行:

npm install --save-dev --ignore-scripts esbuild@<vite-peerdependency-version>

我不认为这是一个永久的解决方案,但它为我解决了这个问题。

编辑:

我找到了一个更永久的解决方案,我降级了我的节点版本16.11.1,并修复了它。此解决方案适用于多台计算机。

当项目中的多个依赖项需要esbuild时(特别是当单独的依赖项需要不同版本的esbuild时),我就经历过这种情况。试着找到一个通用的esbuild版本,它适用于你的repo中的所有依赖项,并在包中设置一个"overrides": { "esbuild": "x.y.z" }。Json (npm 8.1)X或更高版本才需要使用覆盖)。就我个人而言,我很幸运地找到了适用于所有依赖项的最低通用版本,在某些情况下,我不得不锁定vite版本,以使用esbuild的兼容版本作为repo中的其他构建工具。试着得到它,当你npm ls esbuild时,它会显示(deduped)的所有内容,超过第一次引用esbuild,没有版本不兼容。

============

编辑:我上面的结论是不正确的。根本原因是我公司的本地npm注册表,node_modules/esbuild/bin/esbuild文件被损坏了。如果你遇到了这个问题,那么比较一下公共npm中的bin/esbuild文件和你公司的npm,看看你是否可以重新上传库。在我的例子中,我们的本地解决方案的bin/esbuild文件不知何故变成了一个实际的二进制文件,大小为9mb。来自公共npm注册表的脚本只有9kb,是一个简单可读的node/shell脚本。 https://github.com/evanw/esbuild/issues/3387

相关内容

  • 没有找到相关文章

最新更新