#javascript #nuxt.js
Вопрос:
Я создал приложение с помощью Nuxt и создал простое серверное промежуточное программное обеспечение для обработки отправки электронной почты. Все работает над разработкой, но на производстве у меня ошибка 404 с этой конечной точки. Кто-нибудь знает, как включить промежуточное программное обеспечение сервера в файлы сборки или любым другим способом?
серверное промежуточное программное обеспечение:
const bodyParser = require('body-parser')
const app = require('express')()
app.use(bodyParser.json())
app.post('/', (req, res) => {
// Some code here
})
module.exports = app
Nuxt.config.js
serverMiddleware: [
{ path: '/contact/send', handler: '~/server-middleware/email.js' }
],
Комментарии:
1. Вы используете свое приложение только как статическое или тоже с SSR ?
2. Я создал свое приложение с помощью SSR
3. По — моему, все в порядке. Вы не забыли какую-нибудь переменную env или что-то подобное ? Я имею в виду, вы уверены, что проблема исходит отсюда ? Кроме того, установлены ли ваши пакеты, используемые в промежуточном программном обеспечении, как
dependencies
и не толькоdevDependecies
?4. Да, я не вижу никакой строки «связаться/отправить» в папке сборки :/ Я вижу, что это не существует, в папке сборки не создается :/ Я получаю 404, что правильно, потому что его там нет :/
5. Кстати, где размещено ваше приложение? Вы уверены, что у него есть сервер узлов для SSR?
Ответ №1:
Я нашел ответ на вопрос github о репо nuxt:
Это правильно — серверное промежуточное программное обеспечение не компилируется и не является частью сборки вашего веб-пакета, поэтому вам следует обязательно скопировать их отдельно в производство. (А также убедитесь, что все зависимости, которые у них есть, установлены в рабочей среде.)
(Обратите внимание, что это изменится с Nuxt 3 — у вас будет один встроенный сервер, включающий промежуточное программное обеспечение вашего сервера.)
Проблема здесь: https://github.com/nuxt/nuxt.js/issues/9158#issuecomment-820676790
Ответ №2:
Это решение, похоже, работает: https://github.com/nuxt/nuxt.js/issues/1486#issuecomment-325181524
// nuxt.config.js
serverMiddleware: [
'~/api/index.js',
]
// api/index.js
const app = require('express')()
module.exports = { path: '/api', handler: app }
app.get('/say/:word', (req, res) => {
res.json(req.params)
})
Комментарии:
1. На dev работает, но это работало, но на производстве я все еще получаю 404 :/
2. Я написал некоторую конечную точку get «/test», и после сборки я не вижу никакой строки, подобной «/test» или «test», она не создается
3. Да, кажется законным, что этот тоже глючит. Никогда не работал с
serverMiddleware
этим , это кажется немного сложным.4. Спасибо, что уделили мне время @kissu