javascript - 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
,它就像那样工作。
解决方案
为了创建你的服务器,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
浏览器,一切都会正常工作。