在Next.js应用中安装Strapi时遭遇依赖安装错误
解决Strapi安装时的esbuild版本不匹配与权限问题
问题描述
我是Strapi新手,首次使用该工具,需要在我的Next.js应用中集成其CMS功能。多次使用npx create-strapi-app backend命令安装Strapi,但每次都出现相同错误。已卸载并重装npm、Node.js和esbuild,尝试过不同版本,但问题仍未解决。错误日志如下:
PS G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding> npx create-strapi-app backend ? Choose your installation type Quickstart (recommended) You are running Node.js 19.9.0 Strapi only supports LTS versions of Node.js, other versions may not be compatible. Creating a quickstart project. Creating a new Strapi application at G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend. Creating files. Error while installing dependencies: npm WARN config production Use `--omit=dev` instead. npm WARN config optional Use `--omit=optional` to exclude optional dependencies, or npm WARN config `--include=optional` to include them. npm WARN config npm WARN config Default value does install optional deps unless otherwise omitted. npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated npm WARN deprecated mailcomposer@3.12.0: This project is unmaintained npm WARN deprecated @koa/router@10.1.1: **IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173 npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! npm WARN deprecated buildmail@3.10.0: This project is unmaintained npm WARN cleanup Failed to remove some directories [ npm WARN cleanup [ npm WARN cleanup 'G:\\Workspace\\Chris-Ogbuehis-Monorepo\\FiftyFiftyFunding\\fiftyfiftyfunding\\backend\\node_modules\\@strapi', npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend\node_modules\@strapi\admin\ee\admin\pages\SettingsPage'] { npm WARN cleanup errno: -4048, npm WARN cleanup code: 'EPERM', npm WARN cleanup syscall: 'rmdir', npm WARN cleanup path: 'G:\\Workspace\\Chris-Ogbuehis-Monorepo\\FiftyFiftyFunding\\fiftyfiftyfunding\\backend\\node_modules\\@strapi\\admin\\ee\\admin\\pages\\SettingsPage' npm WARN cleanup } npm WARN cleanup ] npm WARN cleanup ] npm ERR! code 1 npm ERR! path G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend\node_modules\esbuild-loader\node_modules\esbuild npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node install.js npm ERR! G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend\node_modules\esbuild-loader\node_modules\esbuild\install.js:130 npm ERR! throw new Error(`Expected ${JSON.stringify("0.16.17")} but got ${JSON.stringify(stdout)}`); npm ERR! ^ npm ERR! npm ERR! Error: Expected "0.16.17" but got "0.19.2" npm ERR! at validateBinaryVersion (G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend\node_modules\esbuild-loader\node_modules\esbuild\install.js:130:11) npm ERR! at G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding\backend\node_modules\esbuild-loader\node_modules\esbuild\install.js:281:5 npm ERR! npm ERR! Node.js v19.9.0 npm ERR! A complete log of this run can be found in: C:\Users\Jojo\AppData\Local\npm-cache\_logs\2023-10-31T18_46_16_957Z-debug-0.log TypeError: Cannot read properties of undefined (reading 'addBreadcrumb') at C:\Users\Jojo\AppData\Local\npm-cache\_npx\f5b733dbc92df62b\node_modules\@strapi\generate-new\dist\utils\usage.js:36:31 at Array.forEach (<anonymous>) at Module.captureStderr (C:\Users\Jojo\AppData\Local\npm-cache\_npx\f5b733dbc92df62b\node_modules\@strapi\generate-new\dist\utils\usage.js:35:37) at createProject (C:\Users\Jojo\AppData\Local\npm-cache\_npx\f5b733dbc92df62b\node_modules\@strapi\generate-new\dist\create-project.js:133:17) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async createQuickStartProject (C:\Users\Jojo\AppData\Local\npm-cache\_npx\f5b733dbc92df62b\node_modules\@strapi\generate-new\dist\create-quickstart-project.js:18:3) PS G:\Workspace\Chris-Ogbuehis-Monorepo\FiftyFiftyFunding\fiftyfiftyfunding>
解决方案
切换Node.js LTS版本
当前使用的Node.js 19.9.0是非LTS版本,Strapi官方仅支持LTS版本,建议切换到18.x或20.x系列的LTS版本:- 用nvm安装对应版本:
nvm install 18.18.0 - 切换到该版本:
nvm use 18.18.0 - 验证版本:
node -v
- 用nvm安装对应版本:
清理缓存与残留文件
权限错误和版本冲突大概率是缓存或残留文件导致的:- 删除已创建的backend文件夹:Windows执行
rmdir /s backend,Mac/Linux执行rm -r backend - 强制清理npm缓存:
npm cache clean --force - 删除npx缓存目录中相关文件:手动删除
C:\Users\Jojo\AppData\Local\npm-cache\_npx下的临时文件夹
- 删除已创建的backend文件夹:Windows执行
指定Strapi版本并跳过可选依赖
尝试用稳定版Strapi安装,同时跳过可选依赖避免权限问题:npx create-strapi-app@latest backend --quickstart --omit=optional匹配esbuild版本
错误核心是esbuild-loader依赖的esbuild版本(0.16.17)与全局安装的0.19.2不兼容,全局安装指定版本:npm install -g esbuild@0.16.17安装完成后重新执行Strapi安装命令。
内容的提问来源于stack exchange,提问作者Jojo Amankwa
相关产品推荐
相关产品推荐

