我想在一个来自AWS EC2的Linux机器上托管两个节点的应用程序。在那里我可以运行开发环境和临时环境。我注意到我将不得不在两个应用程序上使用不同的端口,但这不是我面临的问题。
使用暂存端,它总是在我启动它的前一台机器上工作,在尝试不同的端口之前确保它工作。
我有一个使用express的后端node.js和一个用Vue CLI构建的静态网页。其中express应用程序将使用app.use(express.static('static'));
来托管静态网页。然后继续使用pm2 start /directoryToDist/main.js
在PM2上托管它。一旦守护进程启动,我执行了一个curl http://localhost:80/
,但是它返回了一个错误的Cannot GET /
页面。
当我在这两个应用程序上运行npm install
、npm rebuild
和npm build
时。已确保正确构建了dist
文件夹。然后做了一个sudo -i
和pm2 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
消息。
发布于 2019-06-12 21:05:55
找到了一个有效的解决方案。
Pm2没有指向当前工作目录。sudo -i
,然后运行它,$ pm2 start /home/user/directory
将在directory
文件夹而不是implemented dist
文件夹中查找模块路由。
所以通过解决这个问题。必须首先遍历目录并在那里启动pm2 start。$ cd /home/user/directory/dist/
$ pm2 start main.js
.这为node应用程序提供了良好和稳定的服务。
发布于 2020-07-10 18:57:40
或者您可以使用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'))
)
https://stackoverflow.com/questions/56565323
复制相似问题