我想在 AWS EC2 的一台 Linux 机器上托管 2 Node 应用程序。我可以在哪里运行开发环境和暂存环境。我注意到我将不得不在两个应用程序上使用不同的端口,但这不是我面临的问题。
首先使用一直在我启动它的以前的盒子上工作的暂存端,确保它在尝试不同的端口之前工作正常。
我有一个使用 express 的后端 node.js 和一个使用 Vue CLI 构建的静态网页。 Express 应用程序将使用 app.use(express.static('static'));
来托管静态网页。然后继续使用 pm2 start/directoryToDist/main.js
在 PM2 上托管它。守护进程启动后,我执行了一个 curl http://localhost:80/
但它返回了一个错误 HTML 页面 Cannot GET/
。
当我在两个应用程序上执行 npm install
、npm rebuild
和 npm build
时。确保正确构建了 dist
文件夹。然后执行 sudo -i
和 pm2 start/directoryToDist/main.js
。确保 Node 应用程序正在运行我做了一个 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
消息。
最佳答案
或者你可以用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'))
)
关于node.js - 我运行了一个 npm run build,将它放在 nodejs express.static 上,pm2 启动应用程序但无法获取 '/',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565323/