Я считаю, что источником вашей проблемы является разрыв между реализацией Nuxt Express, устареванием / конфликтами версий промежуточного программного обеспечения bodyParser и / или системой событий Node.
Я бы лично сделал шаг назад, удалив пользовательскую экспресс-маршрутизацию, обработал бы тело, анализируя себя в промежуточном программном обеспечении, и воспользовался бы магазином Vuex.
store/index.js
export const state = () => ({
postBody: null,
postError: null
})
export const mutations = {
postBody: (state, postBody) => {
state.postBody = postBody;
},
postError: (state, postError) => {
state.postError = postError;
},
}
export const getters = {
postBody: state => state.postBody,
postError: state => state.postError,
}
middleware/index.js
export default ({req, store}) => {
if (process.server && req && req.method === 'POST') {
return new Promise((resolve, reject) => {
req.on('data', data => resolve(store.commit('postBody', JSON.parse(data))));
req.on('error', data => reject(store.commit('postError', JSON.parse(data))));
})
}
}
pages/index.vue
<template>
<div>
<h1>Test page</h1>
<div v-if="postBody">
<h2>post body</h2>
<p>{{postBody}}</p>
</div>
<div v-if="postError">
<h2>post error</h2>
<p>{{postError}}</p>
</div>
<div v-if="!postError && !postBody">
Please post JSON data to this URL to see a response
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
middleware: 'post-data',
computed: mapGetters({
postBody: 'postBody',
postError: 'postError'
})
}
</script>
Ниже приведен пример проекта, приведенного выше.Отправьте данные JSON с помощью клиентского приложения (почтальон, веб-форма и т. Д.), Чтобы просмотреть опубликованные данные, отображаемые на странице.
Живой код: https://glitch.com/edit/#!/terrific-velociraptor
Живой пример: https://terrific -velociraptor.glitch.me /