无法将 nodejs 应用程序部署到 heroku
Posted
技术标签:
【中文标题】无法将 nodejs 应用程序部署到 heroku【英文标题】:Trouble deploying nodejs app to heroku 【发布时间】:2017-07-29 00:23:54 【问题描述】:我正在尝试将 nodejs 应用程序部署到 heroku,当我检查 heroku logs
时出现以下错误,
sh:1: npm-run-all : 未找到
我的 package.json 看起来像这样
"name": "web-training",
"version": "1.0.0",
"description": "web-training",
"scripts":
"prestart": "babel-node tools/startMessage.js",
"start": "npm-run-all --parallel open:src lint:watch test:watch",
"open:src": "babel-node tools/srcServer.js",
"lint": "node_modules/.bin/esw webpack.config.* src tools",
"lint:watch": "npm run lint -- --watch",
"test": "mocha --reporter spec tools/testSetup.js \"src/**/*.test.js\"",
"test:watch": "npm run test -- --watch",
"clean-dist": "npm run remove-dist && mkdirp dist-server/dist",
"remove-dist": "node_modules/.bin/rimraf ./dist-server/dist",
"build:html": "babel-node tools/buildHtml.js",
"prebuild": "npm-run-all clean-dist test lint build:html",
"build": "babel-node tools/build.js",
"postbuild": "babel-node dist-server/server.js"
,
"author": "Cory House",
"license": "MIT",
"dependencies":
"babel-polyfill": "6.8.0",
"bootstrap": "3.3.6",
"compression": "^1.6.1",
"express": "^4.13.4",
"install": "^0.8.4",
"jquery": "2.2.3",
"material-ui": "^0.16.7",
"npm": "^4.0.5",
"open": "0.0.5",
"rd-react-overlay": "^1.4.2",
"react": "15.0.2",
"react-dom": "15.0.2",
"react-native-search-bar": "^2.16.0",
"react-native-vector-icons": "^4.0.0",
"react-redux": "4.4.5",
"react-router": "2.4.0",
"react-router-redux": "4.0.4",
"react-skylight": "^0.4.1",
"react-tap-event-plugin": "^2.0.1",
"redux": "3.5.2",
"redux-thunk": "2.0.1",
"toastr": "2.1.2"
,
"devDependencies":
"axios-mock-adapter": "^1.7.1",
"babel-cli": "6.8.0",
"babel-core": "6.8.0",
"babel-loader": "6.2.4",
"babel-plugin-react-display-name": "2.0.0",
"babel-preset-es2015": "6.6.0",
"babel-preset-react": "6.5.0",
"babel-preset-react-hmre": "1.1.1",
"babel-register": "6.8.0",
"colors": "1.1.2",
"compression": "1.6.1",
"cross-env": "1.0.7",
"css-loader": "0.23.1",
"enzyme": "2.2.0",
"eslint": "2.9.0",
"eslint-plugin-import": "1.6.1",
"eslint-plugin-react": "5.0.1",
"eslint-watch": "2.1.11",
"eventsource-polyfill": "0.9.6",
"expect": "1.19.0",
"express": "4.13.4",
"extract-text-webpack-plugin": "1.0.1",
"file-loader": "0.8.5",
"jsdom": "8.5.0",
"mocha": "2.4.5",
"nock": "8.0.0",
"npm-run-all": "1.8.0",
"open": "0.0.5",
"react-addons-test-utils": "15.0.2",
"react-search-component": "^1.1.2",
"redux-immutable-state-invariant": "1.2.3",
"redux-mock-store": "1.0.2",
"rimraf": "2.5.2",
"style-loader": "0.13.1",
"url-loader": "0.5.7",
"webpack": "1.13.0",
"webpack-dev-middleware": "1.6.1",
"webpack-hot-middleware": "2.10.0"
,
"repository":
"type": "git",
"url": "https://github.com/XXX/YYY"
当我在命令行中使用npm run build
在本地运行我的应用程序时,它运行良好。
有什么建议吗?
我正在添加 Procfile 内容:
web:npm run build
我不确定这是否正常。
【问题讨论】:
你能提供Procfile
吗?
我刚刚添加了上面的Procfile内容
【参考方案1】:
您需要将npm-run-all
添加到您的“dependancies”中,而不是添加到您的package.json
中的“devDependancies”中。
这是因为在部署到 Heroku 时,npm
在构建 production
时会修剪您的“devDependancies”。
【讨论】:
【参考方案2】:只是想分享一下我的经验,因为我在使用 npm-run-all
部署到 Heroku 时遇到了类似的问题。
似乎 Heroku 在构建应用程序时默认运行 start 脚本并且无法成功运行npm-run-all
(我在终端中运行heroku logs
后发现)。我最初有像 this 这样的脚本(请注意我在 start 脚本中如何使用 npm-run-all
)并遇到应用程序错误。
我只是将 start 脚本改回了 node server.js
并创建了一个新脚本来运行 npm-run-all
,例如 this。这对我有用。
(对图片链接感到抱歉。所以除非我有至少 10 个声望,否则不会让我发布图片。)
希望这可以帮助遇到同样问题的其他人。
【讨论】:
【参考方案3】:· 首先在 git 和 heroku 中创建你的帐户
· 在你的系统上安装 git 和 heroku..如果你使用 windows 必须安装 git bash
· 在 git 中创建你的仓库
· 现在找出下面的命令
-git init
-git clone git repository url
-cd repository folder name
· 将代码复制到本地 git 存储库文件夹中
· 打开终端转到您的存储库文件夹,然后应用以下命令
-git init
-git add *
-git commit -m "your comment"
-git status
-git push origin master
· 检查你在 git cloud 上的 git 仓库
· 打开新终端应用以下命令
-git clone repository url
-cd repository url
-heroku login
-heroku create name of your application on heroku
-git remote(to verify heroku)
-git push heroku master
-heroku open
**请按照上述步骤在heroku中部署您的代码*
您可以使用以下命令为 heroku 部署制作演示节点 js 项目
express 项目名称 --ejs cd 项目名称 npm 安装 npm 开始【讨论】:
-cd repository path , -heroku login , -heroku create 您在 heroku 上的应用程序名称 , -git remote(验证 heroku) , -git push heroku master , -heroku open以上是关于无法将 nodejs 应用程序部署到 heroku的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Typescript、NodeJS 和 Express 应用程序部署到 Heroku
为啥 react+nodejs 应用程序部署到 heroku 显示应用程序错误?
将React + NodeJS + Express + MySQL应用程序部署到Heroku仅部署服务器而不是React