Heroku无法获得/

bul*_*ave 12 git deployment heroku gitignore node.js

我是Heroku的新手,并且相信我遵循Heroku网站上列出的所有步骤,通过node.js进行部署 - https://devcenter.heroku.com/articles/getting-started-with-nodejs - 尽管有成功的迹象,当我去新生成的herokuapp.com网站时,我只在浏览器中看到这个.

不能获取 /

执行时没有错误

git push heroku master
Run Code Online (Sandbox Code Playgroud)

我的Procfile很简单

web: node app.js
Run Code Online (Sandbox Code Playgroud)

我还不太了解dynos,但似乎有一个正在运行:

heroku ps === web(1X):node app.js web.1:up 2014/07/03 23:55:00(~18m ago)

然后:

heroku打开打开APP-NAME ...完成

https://APP-NAME.herokuapp.com/只显示无法获取/消息.

bul*_*ave 28

我把我的dist目录包含在我的.gitignore文件中,所以我没有对我的repo进行dist而不是将它推送到Heroku.因此,Heroku无法找到任何内容.

我更新了我的.gitignore,承诺和推送,现在我的应用程序在Heroku上显示正常.


小智 7

差不多3年了,但我回答是为了参考.

  • general/dist是一个构建过程生成的目录,它是临时的,并且在我们的源代码中工作时会发生很大的变化,所以/ dist没有版本化.
  • 在你的package.json上你可以用这个构建过程添加一个名为postinstall的脚本,假设你在gulp中有一个名为build的任务...所以"postinstall":"gulp build"
  • 如果你也管理你的项目在凉亭中的依赖关系,npm install --save bower和"postinstall":"./ node_modules/bower/bin/bower install && gulp build"

只是一个简单的例子,你的package.json

{
   "dependencies: {
    "bower":"^1.8.0",
    "grunt":"^1.0.1",
   },
   "scripts": {
    "start": "node ./www.js",
    "build": "grunt dist",
    "postinstall": "./node_modules/bower/bin/bower install && npm run build"
   }
}
Run Code Online (Sandbox Code Playgroud)

显而易见,你现在可能已经做得更好了......我只是将它引用到下一个咨询中.


Rob*_*uez 6

确保您已准备好以下 2 件事:

  1. 在您的 package.json 中,包括 heroku-postbuild 行,在我的情况下是这样的,(如果您需要进行多次安装,它可能会改变)
        "scripts": { 
        "heroku-postbuild": "npm install --prefix client && npm run build --prefix client"
      },
Run Code Online (Sandbox Code Playgroud)
  1. 在您的 index.js 文件中,添加生产条件
    if (process.env.NODE_ENV === "production"{
      app.use(express.static("build"));
      app.get("*", (req, res) => {
        res.sendFile(path.resolve(__dirname,  "build", "index.html"));
      });
    }
Run Code Online (Sandbox Code Playgroud)

Express 将提供生产资产,例如我们的 main.js 文件或 main.css 文件

最后 - Express 查看请求是否是针对资产的,如果 Express 无法识别路由,它将提供 index.html 文件