2016-09-12 62 views
5

对Node非常新,并部署到Heroku。我有一个基本的React应用程序设置,并试图部署到Heroku。我推它,但应用程序失败。当我看到日志时,我看到一些有关sh: 1: webpack: not found(完整日志here未找到Webpack,部署到Heroku

我不是很确定发生了什么,但相信它与我的package.json有关?从我用起始模板是这样的:

{ 
    "name": "express-react-redux-starter", 
    "version": "1.0.0", 
    "description": "Starter for Express, React, Redux, SCSS applications", 
    "scripts": { 
     "dev": "webpack-dev-server --config ./webpack/webpack-dev.config.js --watch --colors", 
     "build": "rm -rf dist && webpack --config ./webpack/webpack-prod.config.js --colors", 
     "start": "PORT=8080 node start ./server.js", 
     "test": "mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive ./test", 
     "test:watch": "npm run test -- --watch", 
     "lint": "eslint src test webpack" 
    }, 
    "keywords": [ 
     "ExpressJS", 
     "ReactJS", 
     "Redux", 
     "React hot loader", 
     "React Router", 
     "SCSS", 
     "Webpack Devevelopment configuration", 
     "Webpack Production configuration", 
     "Airbnb Eslint", 
     "pm2", 
     "mocha", 
     "chai" 
    ], 
    "repository": { 
     "type": "git", 
     "url": "git+https://github.com/DimitriMikadze/express-react-redux-starter" 
    }, 
    "author": "Dimitri Mikadze", 
    "license": "MIT", 
    "devDependencies": { 
     "autoprefixer": "^6.4.0", 
     "autoprefixer-loader": "^3.2.0", 
     "babel-core": "^6.8.0", 
     "babel-loader": "^6.2.4", 
     "babel-preset-es2015": "^6.6.0", 
     "babel-preset-react": "^6.5.0", 
     "babel-preset-stage-1": "^6.5.0", 
     "chai": "^3.5.0", 
     "chai-jquery": "^2.0.0", 
     "css-loader": "^0.23.1", 
     "eslint": "^2.10.2", 
     "eslint-config-airbnb": "^9.0.1", 
     "eslint-plugin-import": "^1.8.0", 
     "eslint-plugin-jsx-a11y": "^1.2.0", 
     "eslint-plugin-react": "^5.1.1", 
     "extract-text-webpack-plugin": "^1.0.1", 
     "html-webpack-plugin": "^2.16.1", 
     "jquery": "^2.2.3", 
     "jsdom": "^9.0.0", 
     "mocha": "^2.4.5", 
     "node-sass": "^3.7.0", 
     "react-addons-test-utils": "^15.0.2", 
     "react-hot-loader": "^1.3.0", 
     "sass-loader": "^3.2.0", 
     "style-loader": "^0.13.1", 
     "url-loader": "^0.5.7", 
     "webpack-dev-server": "^1.14.1" 
    }, 
    "dependencies": { 
     "classnames": "^2.2.5", 
     "express": "^4.13.4", 
     "lodash": "^4.15.0", 
     "react": "^15.0.2", 
     "react-dom": "^15.0.2", 
     "react-redux": "^4.4.5", 
     "react-router": "^2.4.0", 
     "redux": "^3.5.2", 
     "webpack": "^1.13.0" 
    } 
} 

我该怎么做不正确地得到这种部署?在我的本地主机上运行良好。但无法弄清楚如何在我的生活中将它融入世界。非常感谢!

回答

16

好的 - 这与devDependencies和package.json中的依赖关系有关 另外,通过将Heroku配置设置为NPM_CONFIG_PRODUCTION: false我能够解决这个问题。 Thx互联网!

+0

NPM_CONFIG_PRODUCTION:假的,为什么你会怎么做这个?默认情况下,heroku会安装依赖关系,而不是devDependencies。另外webpack dev服务器不适用于生产。 – mdcuesta

+0

谢谢,解决我的问题 –

+0

heroku config:set NPM_CONFIG_PRODUCTION = false是这个建议的语法。 –

4

这是因为Heroku的默认不安装的package.json的dev的相关性,我们需要exculsively告诉的Heroku(NPM)来安装我们的开发依赖(的WebPack是在开发中),因此运行这个命令就可以解决这个 “找不到问题”

npm install --dev 
+1

这是一个更好的解决方案。 – ivarni

+1

我在heroku-preinstall脚本中使用--only = dev。这似乎是新的/正确的方式。非常感谢!!! – SomethingOn

1

下面的命令,应该可以解决您的问题heroku config:set NPM_CONFIG_PRODUCTION=false

这有助于Heroku的从 “devDependencies” 目录中安装packajes(非氟里昂 “依赖”)