首页 > 解决方案 > 在 Nuxt 配置中设置自定义主机不起作用

问题描述

在我的内部nuxt.config.js,当我更改端口时,会考虑它,但不考虑主机:

export default {
  server: {
    port: 8002, // default: 3000
    host: 'localhost2 // default: localhost
  }
  // other configs
}

在我的/etc/hosts,我有:

127.0.0.1   localhost2
$ npm run dev
...
ℹ Listening on: http://localhost:8002/
...

我的配置有什么问题?

标签: nuxt.js

解决方案


这似乎只发生在@nuxt/cli(从 v2.12.2 开始)。当主机名解析为 时127.0.0.1@nuxt/server会自动将其覆盖为localhost这可能是一个错误,我建议在他们的GitHub 问题中报告它。

一种解决方法是使用dev从 生成的 NPM 脚本create-nuxt-app,它不会出现上述问题:

"scripts": {
  "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
  "start": "cross-env NODE_ENV=production node server/index.js",
}

上面的命令假设存在以下文件:

// server/index.js
const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()

// Import and Set Nuxt.js options
let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config)

  const {
    host = process.env.HOST || '127.0.0.1',
    port = process.env.PORT || 3000
  } = nuxt.options.server

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build()
  }

  // Give nuxt middleware to express
  app.use(nuxt.render)

  // Listen the server
  app.listen(port, host)
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  })
}
start()

推荐阅读