Heroku 中的部署 React/Node 应用程序失败
Posted
技术标签:
【中文标题】Heroku 中的部署 React/Node 应用程序失败【英文标题】:Deployment React/Node App in Heroku fails 【发布时间】:2019-02-06 01:10:17 【问题描述】:我不知道怎么回事,请帮忙!
-----> 检测到 Node.js 应用程序 -----> 创建运行环境
NPM_CONFIG_LOGLEVEL=错误 NODE_VERBOSE=假 NODE_ENV=生产 NODE_MODULES_CACHE=真 -----> 安装二进制文件 engine.node(package.json):未指定 engine.npm (package.json): 未指定(使用默认)
正在解析节点版本 8.x... 正在下载并安装节点 8.11.4... 使用默认 npm 版本:5.6.0 -----> 恢复缓存 从 cacheDirectories 加载 2(默认):
node_modules bower_components(未缓存 - 跳过) -----> 建立依赖关系 安装节点模块(package.json + package-lock) 在 5.321 秒内更新 -----> 缓存构建 清除上一个节点缓存 保存 2 个缓存目录(默认): node_modulesbower_components(没有缓存) -----> 修剪 devDependencies 跳过,因为 npm 5.6.0 在运行“npm prune”时有时会因已知问题而失败 https://github.com/npm/npm/issues/19356
您可以通过在 package.json 中更新到至少 npm 5.7.1 来消除此警告 https://devcenter.heroku.com/articles/nodejs-support#specifying-an-npm-version -----> 构建成功! -----> 发现进程类型 Procfile 声明类型->(无) buildpack -> web 的默认类型 -----> 压缩... 完成:33.9M -----> 正在启动... 发布 v36 https://space-hangman.herokuapp.com/ 部署到 Heroku
这是我的 package.json:
"name": "github-fetcher-fullstack-v2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts":
"react-dev": "webpack -d --watch",
"start": "nodemon server/index.js"
,
"license": "ISC",
"devDependencies":
"babel-core": "^6.23.1",
"babel-loader": "^6.3.2",
"babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.23.0",
"webpack": "^2.2.1"
,
"dependencies":
"angular": "^1.6.3",
"animate.css": "^3.7.0",
"bluebird": "^3.5.1",
"body-parser": "^1.17.2",
"bootstrap": "^4.1.3",
"express": "^4.15.0",
"jquery": "^3.1.1",
"moment": "^2.22.2",
"mongoose": "^4.8.6",
"mysql": "^2.13.0",
"popper.js": "^1.14.4",
"react": "^15.4.2",
"react-animated-css": "^1.0.4",
"react-dom": "^15.4.2",
"react-router-dom": "^4.3.1",
"react-simple-popover": "^0.2.4",
"request": "^2.88.0",
"unirest": "^0.5.1"
【问题讨论】:
你能分享你的回购网址吗? github.com/begonaguereca/hangman :) 对不起,我睡着了,我收到Error: Cannot find module './keys/config.js'
,您已将config.js
添加到.gitignores
【参考方案1】:
您可以使用express.js
在heroku 下轻松运行您的项目。你所有的依赖必须在dependencies
下
package.json
"scripts":
"build": "Add yours",
"postinstall": "Same with build",
"start": "node server.js" // Heroku looks for this
,
"dependencies":
Add all your dependencies here
在根目录下创建server.js文件
//Install express server
const express = require('express');
const path = require('path');
const app = express();
// Your dist folder
app.use(express.static(__dirname + '/react-client/dist/'));
app.get('/*', function(req,res)
res.sendFile(path.join(__dirname+'/react-client/dist/index.html'));
);
// Start the app by listening on the default Heroku port
app.listen(process.env.PORT || 8080);
SynonymFinder.js
.header("X-Mashape-Key", process.env.SYNONYMKEY) // You can use Environment Variables for API Key
将您的 API 密钥添加到 Heroku 项目设置页面下的 Config Vars
【讨论】:
【参考方案2】:尝试将engines
中的 Node 和 npm 版本指定为对象;
package.json:
"name": "github-fetcher-fullstack-v2",
...
//starts here
"engines":
"node": "10.x"
"npm": ""
//ends here
如果您的网站是静态的,您可能还需要服务器,请查看this link
【讨论】:
以上是关于Heroku 中的部署 React/Node 应用程序失败的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS时,React截取/ auth / twitter /。我想从我的节点服务器访问/ auth / twitter /而不是反应应用程序
将 Rails 应用程序部署到 Heroku 后,不显示 JQuery 函数中的图像
Heroku 中的 Node.js 应用程序在 Foreman 上工作,但在部署时不工作?
使用 Amazon AWS 将 React、Node/Express 和 MySQL Web 应用程序部署到 Web 上