gpt4 book ai didi

node.js - 如何在heroku上使用neutrino部署node.js应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:21 24 4
gpt4 key购买 nike

我开发了一个简单的应用程序,并在 heroku 上提供了它。我在这个项目中添加了中微子。在本地使用yarn它可以工作,但现在我在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"
}
}

这是 Heroku 上的日志

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

最佳答案

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

heroku buildpacks

输出如下:

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

如果您没有设置这些构建包,您可以通过以下方式进行设置:

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

要配置静态站点,请根据 https://github.com/heroku/heroku-buildpack-static 中的文档将 static.json 文件放入项目的根目录中。 。对于初学者来说,如果您正在构建具有 HTML5 路由的单页应用程序(例如,react-router),您可以从以下内容开始:

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

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

heroku config:set NPM_CONFIG_PRODUCTION=false

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

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

这应该能让你继续前进!最后,如果您从 Heroku 将环境变量注入(inject) Neutrino 应用程序,您需要确保重新构建应用程序,因为 Heroku 默认情况下不会这样做。这可能需要将空提交推送到您的存储库,或其他一些重建机制。

关于node.js - 如何在heroku上使用neutrino部署node.js应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com