首先,不要在Procfile中放入“ npm run build”步骤。这样做会使该步骤在您的Web
dyno每次重新启动时都运行,这不是您想要的。
相反,您要在slug编译期间运行webpack(或确保应用程序中存在所需的依赖项所需的任何其他操作)。
由于您使用的是heroku / node.js buildpack,因此它将自动为您运行“ npm
install”(或毛线安装,如果您选择使用yarn软件包管理器)。
但是,如果您需要安装npm /yarn以上(例如,您需要运行webpack来捆绑客户端依赖项),则需要为slug编译器提供这些步骤的附加说明。做到这一点的一种好方法是使用特定于heroku的构建步骤。
因此,例如,您可能希望在package.json“脚本”中的heroku-postbuild步骤中运行webpack,例如:
"heroku-postbuid" : "cross-env NODE_ENV=production WEBPACK_ConFIG=browser_prod,server_prod webpack --colors",
但是,此外,您还需要注意,默认情况下,Heroku不会安装任何package.json
devDependencies。因此,如果在devDependencies中列出了webpack本身,则默认情况下将无法在heroku-
postbuild步骤中使用它。
解决方法是将webpack(以及所需的任何其他构建依赖项)移到“ dependencies”(而不是“ devDependencies”),或将configvar NPM_CONFIG_PRODUCTION设置为false:
heroku config:set NPM_CONFIG_PRODUCTION=false



