在Heroku上部署Node.js应用程序时遇到了问题。

5
我将为您翻译以下内容:

我正在尝试将一个Node.js应用部署到Heroku,但是当我检查heroku logs时,出现了以下错误:

sh:1: npm-run-all : not found

我的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 文件吗? - radbrawler
我刚刚在上面添加了Procfile的内容。 - LoanFlow
3个回答

4
你需要将npm-run-all添加到你的package.json文件的"dependancies"而不是"devDependancies"中。这是因为在部署到Heroku时,npm会在进行production构建时修剪掉"devDependancies"。

1

我想分享一下我的经验,因为我在使用npm-run-all部署到Heroku时遇到了类似的问题。

似乎Heroku在构建应用程序时默认运行start脚本,并且无法成功运行npm-run-all(我在终端中运行heroku logs后发现)。最初,我的脚本是这样的 this(请注意我在start脚本中使用npm-run-all),然后遇到了应用程序错误。

我只需将start脚本更改为node server.js,并创建一个新脚本来运行npm-run-all,就像this。这对我有用。

(很抱歉关于图片链接的问题。SO不允许我发布图片,除非我至少有10个声望。)

希望这可以帮助任何遇到同样问题的人。


-1

· 首先在 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 云端检查您的 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部署的演示Node.js项目

  • express {项目名称} --ejs
  • cd {项目名称}
  • npm install
  • npm start

-cd {代码库路径}, -heroku 登录, -heroku 创建 {你在 heroku 上的应用名称}, -git 远程(验证 heroku), -git 推送 heroku 主分支, -heroku 打开. - Durgesh Kumar Ahirwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接