Я предвосхищу это, говоря, что я совсем новичок в node / vue / expressJS.
Я создал простое приложение node / vue / mongodb, которое отображает сообщения, полученные из базы данных. Я запустил его на localhost, используя npm run serve
, и все работало нормально. У меня есть весь код переднего плана в папке client
и API интерфейса пользователя в папке server
.
Когда я был готов к развертыванию на моем внешнем сервере Linux, я запустил npm run build
в своей клиентской папке, которая встраивает приложение в папку внутри server
в каталоге public
. Затем я добавил папку server
в git и вытащил ее на моем сервере Linux.
Я указал PM2 на файл index.js внутри server
и указал apache на каталог public
внутри server
. Мое приложение работает, но сообщения не извлекаются, возвращая ошибку 404. Я заметил на вкладке сети, что он пытается нажать http://example.com/api/posts вместо http://example:5000.com/api/posts.
В моих запросах axios в верхней части файла есть переменная url со значением 'api/posts'
, а затем в моем конфигурационном файле я настроил следующий прокси:
const path = require('path');
module.exports = {
outputDir: path.resolve(__dirname, '../server/public'),
devServer: {
proxy: {
'/api': {
target: 'http://example.com:5000'
}
}
}
}
Мне кажется, что на моем производственном сервере это работает неправильно. Кто-нибудь знает, что я мог упустить при развертывании в производство? Должен заметить, что если я вручную нажму http://example.com:5000/api/posts, то корректно получит сообщения.