2015-06-22 42 views
1

的package.jsonHeroku的Procfile - 運行NPM啓動

{ 
    //Other stuff here 

    "scripts": { 
    "prestart": "./scripts/prestart.sh", 
    "start": "./scripts/start.sh" 
    } 
} 

prestart.sh

#!/usr/bin/env bash 
set -ex 
webpack 

start.sh

#!/usr/bin/env bash 
set -ex 
http-server -p $PORT 

Procfile

web: npm start 

當我推送到heroku時,出現應用程序錯誤。所以我運行了一個heroku run bash,並注意到prestart和start腳本根本沒有運行(運行prestart調用webpack - 這將創建一個帶有js文件的生成文件夾)。

任何想法來解決這個問題?

編輯:

  1. WebPACK現在可工作時,我把它安裝後,而不是預啓動。

  2. http-server無法運行。當我運行heroku logs --tail時,我看不到來自http-server的任何輸出。

    輸出的

heroku logs --tail

2015-06-23T18:05:55.628044+00:00 heroku[slug-compiler]: Slug compilation started 
2015-06-23T18:05:55.628049+00:00 heroku[slug-compiler]: Slug compilation finished 
2015-06-23T18:05:55.582057+00:00 heroku[api]: Deploy ** by *** 
2015-06-23T18:05:55.582057+00:00 heroku[api]: Release v14 created by **** 
2015-06-23T18:07:49.114534+00:00 heroku[api]: Starting process with command `bash` by **** 
2015-06-23T18:07:54.748361+00:00 heroku[run.8851]: Starting process with command `bash` 
2015-06-23T18:07:54.7:00 heroku[run.8851]: Awaiting client 
2015-06-23T18:07:54.808283+00:00 heroku[run.8851]: State changed from starting to up 
2015-06-23T18:22:20.007391+00:00 heroku[run.8851]: State changed from up to complete 
2015-06-23T18:22:19.997342+00:00 heroku[run.8851]: Process exited with status 0 

回答

3

如果您使用webpack建立自己的應用程序,你應該把它放到postinstall腳本(不prestart),所以它運行在構建。

npm start當Heroku試圖啓動您的應用程序時應該定期執行。要查看發生了什麼,請檢查heroku logs --tail

+1

太棒了+1。當我將它放入postinstall時,現在運行webpack(仍然不確定它爲什麼在prestart中不起作用)。 – Hari

+0

另外我沒有看到正在運行的http服務器(檢查日誌,並在框中運行ps)。 – Hari

+0

當你運行'heroku logs --tail'時你會看到什麼? – hunterloftis