【问题标题】:Deploy Django/React application heroku部署 Django/React 应用程序 heroku
【发布时间】:2026-02-03 16:10:01
【问题描述】:

我已经在heroku上部署了django app,一切都很好,没有错误等。我在前端使用react,我想做npm installgulp build所以我可以配置我的应用程序正确。

我无法运行heroku run npm install,我只有bash: npm: command not found,我想这没关系,因为当他在服务器上构建应用程序时我需要以某种方式触发它,所以我修改了我的@987654327 @像这样:

{
  "name": "Test app",
  "version": "1.0.0",
  "description": "Testing",
  "main": "bundle.js",
  "scripts": {
    "postinstall": "npm install"
  },
  "dependencies": {
    "bootstrap": "^3.3.7",
    "babel-preset-es2015": "^6.1.2",
    "babel-preset-react": "^6.1.2",
    "babelify": "^7.2.0",
    "browser-sync": "^2.10.0",
    "browserify": "^12.0.1",
    "browserify-shim": "^3.8.11",
    "classnames": "^2.2.0",
    "core-util-is": "^1.0.1",
    "del": "^2.1.0",
    "flux": "^2.1.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-bless": "^3.0.1",
    "gulp-connect": "^2.2.0",
    "gulp-html-replace": "^1.5.4",
    "gulp-if": "^2.0.0",
    "gulp-insert": "^0.5.0",
    "gulp-livereload": "^3.8.1",
    "gulp-load-plugins": "^1.1.0",
    "gulp-minify-css": "^1.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^2.1.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-sync": "^0.1.4",
    "gulp-uglify": "^1.4.2",
    "history": "^1.13.0",
    "keymirror": "^0.1.1",
    "lodash": "^3.10.1",
    "react": "^0.14.2",
    "react-addons": "^0.9.0",
    "react-bootstrap": "^0.27.3",
    "react-dom": "^0.14.2",
    "react-mixin": "^3.0.3",
    "react-router": "^1.0.0",
    "react-style": "^0.5.5",
    "reqwest": "^2.0.5",
    "rimraf": "^2.4.3",
    "run-sequence": "^1.1.4",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.6.0",
    "when": "^3.7.4"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.1.2",
    "babel-preset-react": "^6.1.2",
    "babelify": "^7.2.0",
    "browser-sync": "^2.10.0",
    "browserify": "^12.0.1",
    "browserify-shim": "^3.8.11",
    "classnames": "^2.2.0",
    "core-util-is": "^1.0.1",
    "del": "^2.1.0",
    "flux": "^2.1.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-bless": "^3.0.1",
    "gulp-connect": "^2.2.0",
    "gulp-html-replace": "^1.5.4",
    "gulp-if": "^2.0.0",
    "gulp-insert": "^0.5.0",
    "gulp-livereload": "^3.8.1",
    "gulp-load-plugins": "^1.1.0",
    "gulp-minify-css": "^1.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^2.1.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-sync": "^0.1.4",
    "gulp-uglify": "^1.4.2",
    "history": "^1.13.0",
    "keymirror": "^0.1.1",
    "lodash": "^3.10.1",
    "react": "^0.14.2",
    "react-addons": "^0.9.0",
    "react-bootstrap": "^0.27.3",
    "react-dom": "^0.14.2",
    "react-mixin": "^3.0.3",
    "react-router": "^1.0.0",
    "react-style": "^0.5.5",
    "reqwest": "^2.0.5",
    "rimraf": "^2.4.3",
    "run-sequence": "^1.1.4",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.6.0",
    "when": "^3.7.4"
  },
  "engines": {
    "node": "8.0.0",
    "npm": "5.0.4"
  },
  "author": "",
  "license": ""
}

但这仍然不会在部署时触发npm install 进程,那么任何人都可以帮助我了解如何正确配置它吗?

这是我的 Procfile:

web: python manage.py runserver 0.0.0.0:$PORT --noreload
worker: python worker.py

【问题讨论】:

    标签: node.js django bash reactjs heroku


    【解决方案1】:

    Heroku 通过buildpacks 支持不同的服务器端语言:

    Buildpacks 负责将部署的代码转换为 slug,然后可以在 dyno 上执行。 Buildpacks 由一组脚本组成,根据编程语言,脚本将检索依赖项、输出生成的资产或编译的代码等等。

    由于您的应用程序的 Python 部分似乎安装正确,Heroku 必须将其检测为 Python 应用程序(因为它包含一个 requirements.txt 文件),或者您已手动将其配置为一个。在许多情况下,一个 buildpack 就足够了。

    但是,由于您也在使用 Node.js,因此您应该启用 second buildpack:

    在许多情况下,构建应用程序时单个buildpack 是不够的。这包括您需要:

    • 为您的应用程序使用的每种语言运行一个构建包。例如,为资产运行 JavaScript buildpack,为您的应用程序运行 Ruby buildpack。

    基本流程如下所示(在您的开发机器上使用Heroku CLI):

    heroku buildpacks:set heroku/python
    heroku buildpacks:add --index 2 heroku/nodejs
    

    我在上面提供的链接包含更多详细信息。我建议您完整阅读它们。

    【讨论】: