React嵌入Rails项目部署Heroku时遇cp命令错误求助
问题原因与解决方法
错误根源
部署失败的核心问题是npm deploy脚本里的cp命令格式写错了:
- Rails根目录package.json的
deploy脚本中,你把源路径es20client/build/.(用来复制build目录下所有内容,包括隐藏文件)和目标路径public/连在了一起,写成了es20client/build/.public/。 - 这导致cp命令只识别到一个不存在的源路径,完全没收到目标目录参数,直接触发"missing destination file operand"错误。
- 另外从
cp --help输出能看出Heroku用的是BSD版本的cp,但这不是本次报错的直接原因。
修复步骤
- 打开Rails根目录的
package.json文件 - 修改
scripts里的deploy命令,在build/.和public/之间加一个空格:"deploy": "cp -a es20client/build/. public/", - 提交修改并重新推送到Heroku:
git add package.json git commit -m "Fix deploy script cp command format" git push heroku main
本地验证(可选)
可以在本地先测试命令是否正常工作:
rm -rf public npm run build --prefix es20client cp -a es20client/build/. public/
检查public目录是否正确包含React构建后的所有文件。
内容的提问来源于stack exchange,提问作者Jim Lagattuta
相关产品推荐
相关产品推荐

