Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将MEAN stack应用程序部署到Heroku时不加载任何文件?_Node.js_Angular_Express_Heroku - Fatal编程技术网

Node.js 将MEAN stack应用程序部署到Heroku时不加载任何文件?

Node.js 将MEAN stack应用程序部署到Heroku时不加载任何文件?,node.js,angular,express,heroku,Node.js,Angular,Express,Heroku,我正在设置要部署到Heroku的web应用程序。构建成功,但没有加载任何文件,我遇到一个空白页面和一条无法获取/错误消息 我已经尝试了下面的两个指南/解决方案,但都没有找到任何一个。 我试着改变我的PROCFILE、Server.js和/bin/www.js文件,试图让heroku实际加载事物的角度,但没有效果 有一个指向repo的链接,它是我的本地文件的最新版本,因此文件结构基本相同,减去my.git 这是我最后一张“heroku日志——尾巴”的图片 我还在app.js文件(其中声明了ex

我正在设置要部署到Heroku的web应用程序。构建成功,但没有加载任何文件,我遇到一个空白页面和一条无法获取/错误消息

我已经尝试了下面的两个指南/解决方案,但都没有找到任何一个。

我试着改变我的PROCFILE、Server.js和/bin/www.js文件,试图让heroku实际加载事物的角度,但没有效果

有一个指向repo的链接,它是我的本地文件的最新版本,因此文件结构基本相同,减去my.git

这是我最后一张“heroku日志——尾巴”的图片

我还在app.js文件(其中声明了express())中包含以下行:

因为我知道当运行ng build时,它会将angular应用程序构建到/dist/目录中

所有这些都在我的本地机器上工作。我在angular侧运行
npm start
,通常运行
ng serve--proxy config proxy.config.json
,在要调用
node./bin/www
的对象的节点侧运行
npm start
。我将它们设置为角度侧“开始”脚本的
node./node/server.js
,节点侧“开始”脚本的
node./node/bin/www
,以及包含
web:npm start

显然,在部署应用程序时,我需要更改heroku运行的内容,这样不仅可以初始化节点端。但我很难弄清楚heroku需要加载什么,不需要加载什么


如果需要更多信息或更多图片,我很乐意提供,因为我似乎不太容易找到答案。谢谢您的时间。

我不确定您实际使用了哪些文件,因为您的回购协议与您在此处编写的不同

如果在其中写入“npm start”,则不需要Procfile,如果没有Procfile,heroku将使用npm start。因此,在Procfile中编写正确的start命令,如:

web: node ./node/server.js"
然后,您可以为您的开发机器使用“npm启动”

明显的错误是dist文件夹的路径,因为express服务器是根据日志启动的。如果使用我们在日志中看到的命令启动express server:

node ./node/server.js"
您需要一个类似“./dist/”的路径,因为您在节点文件夹中启动了express server,并且需要从中退出,因为dist文件夹与节点文件夹处于同一级别

var distDir = "../dist/";
app.use(express.static(distDir));
另一个问题可能是安装后脚本。此脚本将在heroku上安装npm后运行,但在npm运行build之前运行。将postinstall替换为heroku postbuild。这将取代heroku上的“npm构建”

"postinstall": "ng build --output-path dist --prod" // replace that line with the next
"heroku-postbuild": "ng build --output-path dist --prod"

我不确定你实际使用了哪些文件,因为你的回购协议与你在这里写的不同

如果在其中写入“npm start”,则不需要Procfile,如果没有Procfile,heroku将使用npm start。因此,在Procfile中编写正确的start命令,如:

web: node ./node/server.js"
然后,您可以为您的开发机器使用“npm启动”

明显的错误是dist文件夹的路径,因为express服务器是根据日志启动的。如果使用我们在日志中看到的命令启动express server:

node ./node/server.js"
您需要一个类似“./dist/”的路径,因为您在节点文件夹中启动了express server,并且需要从中退出,因为dist文件夹与节点文件夹处于同一级别

var distDir = "../dist/";
app.use(express.static(distDir));
另一个问题可能是安装后脚本。此脚本将在heroku上安装npm后运行,但在npm运行build之前运行。将postinstall替换为heroku postbuild。这将取代heroku上的“npm构建”

"postinstall": "ng build --output-path dist --prod" // replace that line with the next
"heroku-postbuild": "ng build --output-path dist --prod"