npm start无法找到已存在的package.json问题求助
解决npm start提示找不到package.json的问题(文件实际存在)
问题场景
执行npm start时收到错误:
npm ERR! code ENOENT. npm ERR! syscall open npm ERR! path C:\Myfirstproject\Vinci\Projet_Web\package.json npm ERR! errno -4058 npm ERR! enoent Could not read package.json: Error: ENOENT: no such file or directory, open 'C:\Myfirstproject\Vinci\Projet_Web\package.json
确认package.json确实存在于上述路径,文件内容如下:
{ "name": "projet-web-2024", "version": "0.0.0", "private": true, "scripts": { "start": "nodemon app.js", "test": "eslint --rulesdir ./tests ." }, "dependencies": { "bcrypt": "^5.1.1", "better-sqlite3": "^9.4.3", "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "express-session": "^1.17.3", "hbs": "~4.0.4", "http-errors": "~1.6.3", "morgan": "~1.9.1", "multer": "^1.4.5-lts.1", "validator": "^13.9.0" }, "devDependencies": { "eslint": "^8.21.0", "eslint-config-prettier": "^8.5.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-hbs": "^1.0.3", "eslint-plugin-import": "^2.26.0", "eslint-plugin-n": "^15.2.4", "eslint-plugin-promise": "^6.0.0", "nodemon": "^2.0.15" } }
可能的原因
- 终端当前工作目录并非目标目录,只是误以为在正确路径下
- 文件实际名称异常:比如后缀被隐藏,实际是
package.json.txt;或文件名包含不可见空格/全角字符 - 权限不足:当前用户没有读取该文件的权限,或文件被系统锁定
- npm缓存损坏、残留进程占用文件资源
- 路径编码异常,导致npm无法正确解析路径
解决步骤
- 确认终端目录:执行
cd命令,检查输出是否和C:\Myfirstproject\Vinci\Projet_Web完全一致。如果不对,重新执行cd C:\Myfirstproject\Vinci\Projet_Web切换目录后重试。 - 检查文件真实名称:打开文件资源管理器,开启“文件扩展名”显示(查看选项中勾选),确认文件是
package.json而非package.json.txt;同时检查文件名是否有多余空格或特殊字符。 - 修复权限:右键
package.json→属性→安全,确保当前用户有“读取”“写入”权限;不行的话以管理员身份打开终端再执行命令。 - 清理缓存并重启进程:执行
npm cache clean --force清理缓存;打开任务管理器结束所有node.exe和npm.exe进程,再重新打开终端试命令。 - 验证文件可读性:在终端执行
type C:\Myfirstproject\Vinci\Projet_Web\package.json,如果能正常输出内容,说明文件可读,问题在npm;如果不能,说明文件本身有读取问题,需修复或重建。 - 重建package.json:把现有文件内容复制备份,删除原文件,执行
npm init -y生成新文件,再覆盖回之前的内容,保存后重试。
内容的提问来源于stack exchange,提问作者user24011147
相关产品推荐
相关产品推荐

