Termux下执行npm start启动React项目报ENOENT错误求助
报错原因
这个ENOENT错误没有其他特殊原因,就是npm执行命令时找不到package.json文件。从你贴的报错路径可以看出,你执行npm start时处于Termux默认用户根目录/data/data/com.termux/files/home/,这个目录下没有React项目的配置文件,npm找不到对应启动脚本就会直接报错退出。
解决步骤
- 先定位React项目根目录:你在Acode中打开的项目文件夹,也就是当初用脚手架创建、内部包含
src、public文件夹的最外层目录,先确认它的实际存储路径。 - 切换到正确目录再执行命令:在Termux中用
cd命令进入上述项目根目录,举个例子,如果你的项目名为my-react-demo,存放在家目录下的code文件夹中,就按顺序执行以下命令:
cd ~/code/my-react-demo # 执行ls查看当前目录文件,列表中能看到package.json就说明路径正确 ls # 确认文件存在后再执行启动命令 npm start
- 常见踩坑处理:
- 如果切到目标目录后执行
ls看不到package.json,要么是进错了文件夹(比如误进入了项目内的src子目录、或者记错了项目存储位置),要么是当初创建项目时依赖安装中断,没有成功生成配置文件。后者直接删除残留的项目文件夹,重新执行脚手架创建命令,等所有依赖安装完成后再操作。 - 如果你把项目存在了手机公共存储目录中,先在Termux执行
termux-setup-storage授予存储访问权限,授权后可以在~/storage/shared/路径下找到公共存储内的文件,再切换到对应项目目录即可。
- 如果切到目标目录后执行
校验方式
切换到目标目录后执行cat package.json,能看到文件内存在"start": "react-scripts start"对应的启动脚本配置,就说明路径完全正确,此时执行npm start就能正常启动开发服务。
注意:所有npm项目相关的命令,都必须在存放
package.json的项目最外层根目录执行,不要在用户根目录、项目的子文件夹内运行这类命令。
内容的提问来源于stack exchange,提问作者Vishnu Soni
相关产品推荐
相关产品推荐

