Node16运行json-server报primordials未定义 常规修复方案无效
问题根因
两个报错的核心原因都是依赖版本不匹配,和你之前尝试的锁graceful-fs版本、装natives、装gulp的排错方向无关:
primordials is not defined报错是因为你安装的json-server@0.4.2是2015年的超老版本,它依赖的graceful-fs@3.x不兼容Node 12以上版本,你当前用的Node v16.15.0必然触发这个报错。gulp 命令无法识别报错是因为你安装的gulp-v4是废弃的第三方测试包,并非官方gulp工具,且本地安装的依赖不会直接注册全局命令,系统自然找不到。另外你这个项目跑json-server完全不需要gulp,属于排错时走了弯路。
修复步骤
- 清理错误配置和冗余文件
先删除项目根目录下的node_modules文件夹、package-lock.json、你之前手动创建的npm-shrinkwrap.json文件。打开package.json,删掉dependencies里的gulp-v4行,再把scripts区块里误放的"type": "module"配置删掉(这个配置属于package.json根层级配置,放在scripts里完全无效,如果你没有全项目改用ES模块的需求,直接删掉即可,避免和老版本react-scripts冲突)。 - 安装兼容Node16的json-server版本
在项目根目录执行命令:npm install json-server@0.17.4 --save-dev
这个是适配Node 14/16的稳定版,已经替换了不兼容的老版本graceful-fs依赖,不会再触发primordials报错。 - 重新安装全量依赖
执行命令:npm install --legacy-peer-deps
加--legacy-peer-deps是因为你用的react-scripts@2.1.3版本较老,和React 18的部分peer依赖校验规则不匹配,加参数可以跳过校验正常安装。 - 验证启动
依赖安装完成后,执行npm run server即可正常启动json-server服务。
补充说明
如果你后续确实需要使用gulp工具,不要装gulp-v4这个包,正确安装方式是:
- 全局安装gulp命令行工具:
npm install gulp-cli -g - 项目本地安装gulp核心包:
npm install gulp --save-dev
安装完成后才能正常调用gulp -v等命令。
内容的提问来源于stack exchange,提问作者Elham Bagheri
相关产品推荐
相关产品推荐

