我运行了一个npm run构建,将其放在nodejs express.static,pm2启动应用程序上,但无法获取'/'

时间:2019-06-12 15:06:40

标签: node.js linux vue.js amazon-ec2 pm2

我想在AWS EC2的一个Linux机器上托管2个节点应用程序。我可以在其中运行开发环境和登台环境的地方。我注意到我必须在两个应用程序上使用不同的端口,但这不是我面临的问题。

使用暂存端,该暂存端一直在我之前开始使用的以前的版本中一直使用,请确保在尝试其他端口之前它可以正常工作。

我有一个使用express的后端node.js和一个用Vue CLI构建的静态网页。快速应用将使用app.use(express.static('static'));托管静态网页的位置。然后使用pm2 start /directoryToDist/main.js将其托管在PM2上。守护程序启动后,我做了一个curl http://localhost:80/,但它返回了一个错误的HTML页面Cannot GET /

当我在两个应用程序上都执行npm installnpm rebuildnpm build时。确保dist文件夹已正确构建。然后做了sudo -ipm2 start /directoryToDist/main.js。确保节点应用程序正在运行,我做了ps -ef | grep js来表明它正在运行。 pm2挂载的应用程序没有重新启动,并且一切运行顺利。之后我做了curl http://localhost/,但确实返回了Cannot GET /

我在先前的盒子中进行了工作应用程序的zip文件传输,并进行了必要的npm安装并运行它。期望它像以前的盒子一样工作,但事实并非如此。显示与Cannot GET /相同的错误。

Node js构建脚本

"build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./babelrc,./package.json,/.npm-debug-log,./static/* --copy-files"

Vue js构建脚本

"build": "node build/build.js"

重建我使用的脚本

cd api
npm run build
cd ..
cd pwa
npm run build
cd ..
sudo rm -rf api/dist/static
sudo mkdir -p api/dist/static
sudo cp -r pwa/dist/* api/dist/static/
sudo chown -R ubuntu.ubuntu *

让我知道您是否需要查看更多

实际结果是在将域分配给特定端口之前,在curl上提供正确的200消息。

2 个答案:

答案 0 :(得分:1)

或者您可以通过path找到它:

import path from 'path'

app.use(
  '/some-url',
  express.static(path.join(__dirname, '/some/path/on/server'))
)

如果您知道服务器上的确切路径。

相对路径也适用:

app.use(
  '/some-url',
  express.static(path.join(__dirname, '../../some/relative/on/server'))
)

答案 1 :(得分:0)

找到了可行的解决方案。

Pm2没有指向当前工作目录。 sudo -i然后运行$ pm2 start /home/user/directory,它将在directory文件夹而不是已实现的dist文件夹中寻找模块路由。

因此可以解决此问题。必须先遍历目录并启动pm2从那里开始。 $ cd /home/user/directory/dist/ $ pm2 start main.js。这为节点应用程序提供了良好且稳定的服务。

相关问题