我正在尝试部署小型全栈应用程序。文件结构是这样的。我正在使用节点服务器,并且客户端文件夹是由create-react-app创建的。
\MyApp
\server.js
\package.json
\client
\package.json
我的外部package.json脚本看起来像这样:
"scripts": {
"client": "cd client && yarn start",
"server": "nodemon server.js",
"dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn
client\"",
"dev:server": "cd client && yarn build && cd .. && yarn start",
"start": "node server.js",
"heroku-postbuild": "cd client && yarn install && yarn install --
only=dev --no-shrinkwrap && yarn run build"
},
我的客户端package.json脚本看起来像这样:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
但是当我尝试在heroku上部署我的应用程序时,会引发以下错误:
warning package.json: No license field
error Command "build" not found.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation
about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation
about this command.
-----> Build failed
We're sorry this build is failing! You can troubleshoot common .
issues here:
https://devcenter.heroku.com/articles/troubleshooting-node-deploys
If you're stuck, please submit a ticket so we can help:
https://help.heroku.com/
Love,
Heroku
! Push rejected, failed to compile Node.js app.
! Push failed
我不明白我在做什么错。
答案 0 :(得分:0)
我遇到了完全相同的问题,并且尝试了一些方法来解决此问题。最后,我发现这是因为客户端文件夹作为我的github存储库中的子模块存在。因此,我将客户端更改为普通文件夹,并推送到heroku起作用。我向您建议的步骤:
检查github存储库上客户端文件夹的状态
如果客户端文件夹是子模块(不可点击),请执行以下步骤
2-1。删除客户端文件夹(cd client
&& rm -rf .git
)中的.git文件夹
2-2。删除远程客户端文件夹缓存(git rm -r --cache client
)
2-3。添加,提交并推送到远程存储库(git add .
&& git commit
&& git push
)。因此更改您的客户端文件夹状态
git push heroku master
)我认为heroku可能无法访问子模块并执行命令。如果这几个步骤行之有效,请告诉我。