首页 > 解决方案 > nuxt.js - 无法定义主机和端口

问题描述

nuxt.js 始终默认为,localhost尽管主机被定义frontend.gradez.loc nuxt.config.js

内容nuxt.config.js

server: {
  host: 'frontend.gradez.loc',
  port: 3000
},

内容package.json

"config": {
  "nuxt": {
    "host": "frontend.gradez.loc",
    "port": "3000"
  }
}

nuxt启动脚本为dev

"dev": "nuxt --hostname frontend.gradez.loc --port 3000",

由于某些奇怪的原因,在启动开发脚本时它总是默认为:Listening on: http://localhost:3000/

我试图在 react 上做同样的事情,我唯一要做的就是创建一个.env文件并在其中添加host=frontend.gradez.loc,它就像那样工作。

标签: javascriptwebpacknuxt.js

解决方案


为了创建你的服务器,Nuxt 在后台使用 Node 的http.createServer,然后调用listen({ host, port })该服务器。

因此,如果在您的本地计算机上,主机名frontend.gradez.loc映射到127.0.0.1,我假设是这种情况,那么该服务器正在 IP 上运行127.0.0.1

为了创建您在 中看到的 url Listening on...,Nuxt 获取该底层服务器的 IP,并将其映射回主机名字符串。它将 IP 静态映射127.0.0.1到 string 'localhost',因此无论host您配置什么,如果它映射到,127.0.0.1那么 Nuxt 将始终将其映射到localhost该 url。执行此操作的代码在这里

报告服务器正在运行localhost:3000而不是frontend.gradez.loc:3000. 从网络的角度来看,这确实是真的,因为两者最终都指向127.0.0.1:3000. 所以从开发服务器的角度来看,这里没有任何问题,它按设计工作。

我不确定您在启动服务器时是否有任何东西在浏览器中自动加载该 url - 如果是这样,我可以从与该主机名(例如 cookie、代理服务器)耦合的工作流程中的其他事物的角度来看,这是多么不方便等等 - 但如果你手动输入frontend.gradez.loc:3000浏览器,一切都会正常工作。


推荐阅读