NPM scripts无法使用相对路径调用外部flask.exe问题
解决npm Scripts目录切换与Flask路径问题
1. cd ../为啥没用?
npm里每个脚本命令都是在单独的子shell里运行的,cd ../只会修改这个子shell的工作目录,命令执行完就失效了——既不会影响后续脚本命令的执行环境,也不会改变你终端的全局当前目录。如果要在同一个环境里执行多步操作,得用&&把命令串起来。
2. 正确配置启动后端的脚本
你的项目结构是这样的:
Project/ ├── venv/ │ └── scripts/ │ └── flask.exe └── React-Flask-master/ # 前端项目根目录,package.json就在这里
从React-Flask-master目录到flask.exe的相对路径是../venv/scripts/flask.exe,之前用../../是多退了一级,肯定找不到文件。
直接修改package.json的scripts字段:
"scripts": { "start-backend": "cd ../ && venv/scripts/flask.exe run", // 也可以不用cd,直接指定Flask路径 "start-backend-alt": "../venv/scripts/flask.exe run" }
- 第一种写法先切换到Project目录再启动Flask,适合后端代码放在Project根目录的场景
- 第二种直接调用Flask的相对路径,只要后端的环境变量(比如FLASK_APP)配置正确就能正常运行
3. 测试目录切换的正确姿势
如果你的temp脚本是想验证目录切换效果,必须把命令放在同一个子shell里:
"scripts": { "temp": "cd ../ && echo \"当前目录: $(pwd)\"" }
执行npm run temp会输出Project目录的路径,证明目录切换在子shell里生效了。
内容的提问来源于stack exchange,提问作者Mich
相关产品推荐
相关产品推荐

