如何在heroku上使用中微子部署node.js应用程序

我做了一个简单的应用程序,我在heroku上。 我为这个项目添加了中微子。 在本地与纱线工作,但现在我有在Heroku上服务的问题。 问题是我怎么能在heroku上安装neutrino?

这里是我的package.json

{ "name": "portfolio", "version": "0.1.0", "private": true, "scripts": { "start": "neutrino start", "build": "neutrino build" }, "devDependencies": { }, "dependencies": { "neutrino-middleware-sass": "^0.0.1", "react": "^16.0.0", "react-burger-menu": "^2.1.10", "react-dom": "^16.0.0", "react-hot-loader": "3.0.0-beta.6", "react-router-dom": "^4.2.2", "react-typist": "^2.0.4", "neutrino": "^7.3.1", "neutrino-preset-react": "^7.3.1" } } 

这里是英雄的日志

 2017-11-07T20:24:27.718248+00:00 app[web.1]: npm ERR! spawn ENOENT 2017-11-07T20:24:27.718349+00:00 app[web.1]: npm ERR! 2017-11-07T20:24:27.718449+00:00 app[web.1]: npm ERR! Failed at the portfolio@0.1.0 start script 'neutrino start'. 2017-11-07T20:24:27.718537+00:00 app[web.1]: npm ERR! Make sure you have the latest version of node.js and npm installed. 2017-11-07T20:24:27.718625+00:00 app[web.1]: npm ERR! If you do, this is most likely a problem with the portfolio package, 2017-11-07T20:24:27.718869+00:00 app[web.1]: npm ERR! not with npm itself. 2017-11-07T20:24:27.718943+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system: 2017-11-07T20:24:27.719014+00:00 app[web.1]: npm ERR! neutrino start 2017-11-07T20:24:27.719102+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with: 2017-11-07T20:24:27.719214+00:00 app[web.1]: npm ERR! npm bugs portfolio 2017-11-07T20:24:27.719288+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via: 2017-11-07T20:24:27.719372+00:00 app[web.1]: npm ERR! npm owner ls portfolio 2017-11-07T20:24:27.719460+00:00 app[web.1]: npm ERR! There is likely additional logging output above. 2017-11-07T20:24:27.722711+00:00 app[web.1]: 2017-11-07T20:24:27.722863+00:00 app[web.1]: npm ERR! Please include the following file with any support request: 2017-11-07T20:24:27.722931+00:00 app[web.1]: npm ERR! /app/npm-debug.log 2017-11-07T20:24:27.785333+00:00 heroku[web.1]: Process exited with status 1 2017-11-07T20:24:27.797858+00:00 heroku[web.1]: State changed from starting to crashed 2017-11-07T20:24:27.800281+00:00 heroku[web.1]: State changed from crashed to starting 2017-11-07T20:24:36.861424+00:00 heroku[web.1]: Starting process with command `npm start` 2017-11-07T20:24:39.981092+00:00 app[web.1]: 2017-11-07T20:24:39.981104+00:00 app[web.1]: > portfolio@0.1.0 start /app 2017-11-07T20:24:39.981106+00:00 app[web.1]: 2017-11-07T20:24:39.981105+00:00 app[web.1]: > neutrino start 2017-11-07T20:24:39.994350+00:00 app[web.1]: 2017-11-07T20:24:39.987770+00:00 app[web.1]: sh: 1: neutrino: not found 2017-11-07T20:24:40.005120+00:00 app[web.1]: npm ERR! Linux 3.13.0-133-generic 2017-11-07T20:24:40.005428+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start" 2017-11-07T20:24:40.005665+00:00 app[web.1]: npm ERR! node v6.12.0 

首先,如果您正在为Heroku部署静态Web应用程序或单页应用程序,则需要确保您的Heroku应用程序正在使用nodejs和静态构build包。 你可以检查你正在使用哪个buildpack:

 heroku buildpacks 

其输出如下所示:

 ❯ heroku buildpacks === your-app Buildpack URLs 1. heroku/nodejs 2. https://github.com/hone/heroku-buildpack-static 

如果你没有设置这些buildpack,你可以这样做:

 heroku buildpacks:add heroku/nodejs heroku buildpacks:add https://github.com/hone/heroku-buildpack-static 

要configuration静态站点,请根据https://github.com/heroku/heroku-buildpack-static上的文档,在项目的根目录中放置一个static.json文件。 对于初学者来说,如果您使用HTML5路由(例如react-router)构build单页面应用程序,则可以从以下开始:

 { "root": "build", "clean_urls": true, "routes": { "/**": "index.html" } } 

接下来,您可以将开发/构build依赖关系存储在devDependencies ,并将Herokuconfiguration设置为在构build时安装它们:

 heroku config:set NPM_CONFIG_PRODUCTION=false 

当Heroku部署Node.js应用程序(即Neutrino)时,它会尝试使用package.json中定义的“start”脚本来启动您的应用程序。 这不适用于静态构build的Web应用程序,因为我们实际上只想构build这些文件,并让静态构build包服务它。 要覆盖Heroku的function,你可以在你的package.json中添加一个heroku-postbuild脚本:

 "scripts": { "heroku-postbuild": "neutrino build" } 

这应该让你去! 最后,如果你是从Heroku注入环境variables到你的Neutrino应用程序中,你会想确保你重新构build应用程序,因为Heroku默认不这样做。 这可能需要向您的回购协议或其他重新build立机制提供一个空的承诺。

Interesting Posts