nuxt.js - 无法定义主机和端口

Ezr*_*ab_ 2 javascript webpack nuxt.js

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

内容nuxt.config.js

server: {
  host: 'frontend.gradez.loc',
  port: 3000
},
Run Code Online (Sandbox Code Playgroud)

内容package.json

"config": {
  "nuxt": {
    "host": "frontend.gradez.loc",
    "port": "3000"
  }
}
Run Code Online (Sandbox Code Playgroud)

nuxt启动脚本为dev

"dev": "nuxt --hostname frontend.gradez.loc --port 3000",
Run Code Online (Sandbox Code Playgroud)

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

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

dav*_*wil 6

要创建服务器,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:3000frontend.gradez.loc:3000127.0.0.1:3000

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