首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在heroku上部署中微子node.js应用程序

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

Stack Overflow用户
提问于 2017-11-07 20:52:59
回答 1查看 272关注 0票数 2

我编写了一个简单的应用程序,并在heroku上提供了它。我在这个项目中加入了中微子。当地的纱线,它是工作的,但现在我有问题的服务,在heroku。问题是我如何在heroku上安装中微子?

这是我的package.json

代码语言:javascript
复制
{
  "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"
  }
}

这是heroku的日志

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-07 23:00:12

首先,如果您要将静态web应用程序或单页应用程序部署到Heroku,则需要确保您的Heroku应用程序使用的是nodejs和静态构建包。您可以检查您正在使用的构建包:

代码语言:javascript
复制
heroku buildpacks

它输出的内容如下:

代码语言:javascript
复制
❯ heroku buildpacks
=== your-app Buildpack URLs
1. heroku/nodejs
2. https://github.com/hone/heroku-buildpack-static

如果没有设置这些buildpack,则可以使用以下方法完成:

代码语言:javascript
复制
heroku buildpacks:add heroku/nodejs
heroku buildpacks:add https://github.com/hone/heroku-buildpack-static

要配置静态站点,请根据static.json上的文档将一个https://github.com/heroku/heroku-buildpack-static文件放到项目的根目录中。首先,如果您正在构建一个带有HTML5路由的页面应用程序(例如,react路由器),您可以从以下几个方面开始:

代码语言:javascript
复制
{
  "root": "build",
  "clean_urls": true,
  "routes": {
    "/**": "index.html"
  }
}

接下来,您可以将开发/构建依赖项存储在devDependencies中,并在构建时设置Heroku配置以安装它们:

代码语言:javascript
复制
heroku config:set NPM_CONFIG_PRODUCTION=false

当Heroku部署一个Node.js应用程序(中微子就是它)时,它尝试使用package.json中定义的" start“脚本来启动应用程序。这不适用于静态构建的web应用程序,因为我们实际上只想构建文件并让静态构建包提供服务。要覆盖Heroku的功能,可以向heroku-postbuild添加一个package.json脚本:

代码语言:javascript
复制
"scripts": {
  "heroku-postbuild": "neutrino build"
}

那应该能让你走了!最后,如果您正在从Heroku向您的中微子应用程序中注入环境变量,您将需要确保重新构建该应用程序,因为Heroku在默认情况下不会这样做。这可能需要推动一个空承诺,你的回购,或其他一些重建机制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47167227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档