Heroku错误无法解决:错误命令“ build”未找到

时间:2019-07-19 15:13:23

标签: node.js reactjs heroku deployment create-react-app

我正在尝试部署小型全栈应用程序。文件结构是这样的。我正在使用节点服务器,并且客户端文件夹是由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

我不明白我在做什么错。

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,并且尝试了一些方法来解决此问题。最后,我发现这是因为客户端文件夹作为我的github存储库中的子模块存在。因此,我将客户端更改为普通文件夹,并推送到heroku起作用。我向您建议的步骤:

  1. 检查github存储库上客户端文件夹的状态

  2. 如果客户端文件夹是子模块(不可点击),请执行以下步骤

2-1。删除客户端文件夹(cd client && rm -rf .git)中的.git文件夹

2-2。删除远程客户端文件夹缓存(git rm -r --cache client

2-3。添加,提交并推送到远程存储库(git add . && git commit && git push)。因此更改您的客户端文件夹状态

  1. 最后推动到heroku(git push heroku master

我认为heroku可能无法访问子模块并执行命令。如果这几个步骤行之有效,请告诉我。