Включить Cors в промежуточном программном обеспечении Nuxt Express - PullRequest
1 голос
/ 23 сентября 2019

У меня есть приложение nuxt с промежуточным программным обеспечением Express, расположенное в src / api / *

, и я хочу включить cors для этого промежуточного программного обеспечения, чтобы другое интерфейсное приложение (в другом домене) могло отправлять запросы на него

по какой-то причине приведенный ниже код не работает должным образом

Также интересно, что запросы к localhost:8000/api/* с использованием почтальона возвращают HTML вместо данных json, которые я возвращаю из своего промежуточного программного обеспечения Express.

Однако, если я прокомментирую эту строку кода app.use(cors()); (удалить использование cors), все начнет работать как положено.

Вот мой код

src / api / index.js

const express = require('express');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const mongoose = require('mongoose');
const cors = require('cors');
const config = require('./config');
const syntaxErrorHandler = require('./middlewares/syntaxError')
const api = require('./routes/api');

mongoose.connect(config.database, {
  useCreateIndex: true,
  useNewUrlParser: true,
});

mongoose.connection.on('connected', () => {
    console.log('Mongoose default connection open to ' + config.database)
});

mongoose.connection.on('error', (err) => {
    console.log('Mongoose default connection error: ' + err)
});

const app = express();

app.use(cors());
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(syntaxErrorHandler);

app.use(api);

// export the server middleware
module.exports = {
  path: '/api',
  handler: app
}

nuxt.config.js

const pkg = require('./package')

module.exports = {
  server: {
    port: 8000
  },
  mode: 'universal',

  serverMiddleware: [
    '~/api/index.js'
  ],

  /*
  ** Headers of the page
  */
  head: {
    title: pkg.name,
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: pkg.description }
    ],
    link: [
      ...
    ],
  },

  /*
  ** Customize the progress-bar color
  */
  loading: { color: '#009def' },

  /*
  ** Global CSS
  */
  css: [
    '@/assets/stylus/main.styl',
  ],

  plugins: [
    ...
  ],

  router: {},

  /*
  ** Nuxt.js modules
  */
  modules: [
     ...
  ],


  /*
  ** Build configuration
  */
  build: {
    /*
    ** You can extend webpack config here
    */
  }
}

...