求助:使用Makefile同时启动Django后端与React前端的问题
解决Makefile无法同时启动Django和React服务的问题
原Makefile的问题分析
你之前写的Makefile之所以只启动了Django服务、没启动React,核心有两个问题:
- 命令阻塞:
python backend/manage.py runserver是前台运行的命令,会一直占用当前进程,后面的cd frontend和npm start根本没机会执行。 - Shell环境独立:Makefile里每一行命令默认在单独的子Shell中运行,
cd frontend只会改变那个临时子Shell的工作目录,下一行的npm start还是在项目根目录执行,自然找不到React的配置文件。
正确的实现方案
要通过单个make run命令同时启动两个服务,得让两个服务都在后台运行(用&),同时确保每个服务的命令在正确的环境中执行。你更新后的思路是对的,这里再整理一下标准写法(注意Makefile的缩进必须用Tab键,不能用空格):
# 启动Django服务,后台运行 django: bash -c "python backend/manage.py runserver &" # 切换到frontend目录并启动React服务,后台运行 react: bash -c "cd frontend && npm start &" # 一键启动两个服务 run: make django make react
也可以简化成更紧凑的写法,直接在run目标中完成所有操作:
run: bash -c "python backend/manage.py runserver &" bash -c "cd frontend && npm start &"
使用小贴士
执行make run后,两个服务就会在后台同时启动。如果需要停止服务,可以用pkill python终止Django进程,用pkill node终止React进程,或者直接关闭终端窗口即可。
内容的提问来源于stack exchange,提问作者arshovon
相关产品推荐
相关产品推荐

