React项目package.json上移一级后npm start启动失败如何解决
问题原因
基于react-scripts的React项目默认约定:执行启动/构建命令时,会以package.json所在的当前工作目录为根,查找同级的src源码目录、public静态资源目录。你当前把package.json移到了外层project目录,src和public都在内层react-project子文件夹下,脚本找不到对应资源路径,所以npm start启动失败。
Node 18和目前所有维护版本的react-scripts都兼容,不需要调整Node版本。
可选解决方法
- 方法一:对齐默认目录约定(零配置成本,优先选)
把react-project内的src、public文件夹直接剪切到外层project folder根目录,和package.json保持同级,最终结构如下:
结构调整完后,在-- project folder |-- package.json |-- src |-- public |-- node_modulesproject folder下重新执行npm install安装依赖,再跑npm start即可正常启动。 - 方法二:保留现有目录,修改命令路径
如果不想挪动src、public的位置,直接修改package.json里的脚本配置,给所有react-scripts命令指定工作子目录:- 先在
project folder目录执行npm install,确保依赖安装在package.json同级位置 - 打开
package.json,修改scripts字段:
{ "scripts": { "start": "react-scripts start ./react-project", "build": "react-scripts build ./react-project", "test": "react-scripts test ./react-project", "eject": "react-scripts eject ./react-project" } }- 如果项目有jsconfig.json/tsconfig.json配置了路径别名,同步把别名对应的路径补上
./react-project前缀,避免模块找不到的报错。
- 先在
- 方法三:还原package.json位置
如果移动package.json是误操作,直接把package.json剪切回react-project文件夹内,进入react-project目录执行npm start即可,不需要改其他配置。
内容的提问来源于stack exchange,提问作者Urvesh Nagda
相关产品推荐
相关产品推荐

