跳转到主文档

dev.https

  • 类型: boolean | { key: string; cert: string }
  • 默认值: false

配置该选项后,可以开启 Dev Server 对 HTTPS 的支持,同时会禁用 HTTP 服务器。

开启前:

  > Local:    http://localhost:8080/
> Network: http://192.168.0.1:8080/

开启后:

  > Local:    https://localhost:8080/
> Network: https://192.168.0.1:8080/

自动生成证书

你可以直接将 https 设置为 true,Modern.js 会基于 devcert 来自动生成 Dev Server 所需的 HTTPS 证书。

modern.config.ts
import { defineConfig } from '@modern-js/app-tools';

export default defineConfig({
dev: {
https: true,
},
});

该方式有一定局限性,由于 devcert 目前不支持 IP addresses,因此访问 Network 域名时会遇到「您的连接不是私密连接」的问题。

此问题的解决方法为点击「高级」->「继续前往 192.168.0.1(不安全)」

如果项目使用了全局代理,将某个 HTTPS 域名代理到本地进行开发时,会遇到热更新失效的问题(本质上是 wss 请求的证书问题),也可以通过上述方法解决。

info

https 代理自动安装证书需要获取 root 权限, 请根据提示输入密码即可。

密码仅在信任证书时使用,不会泄漏或者用于其他环节

手动设置证书

你也可以在 dev.https 选项中手动传入 HTTPS 服务器所需要的证书和对应的私钥,这个参数将直接传递给 Node.js 中 https 模块的 createServer,具体可以参考 https.createServer

modern.config.ts
import fs from 'fs';
import { defineConfig } from '@modern-js/app-tools';

export default defineConfig({
dev: {
https: {
key: fs.readFileSync('certificates/private.pem'),
cert: fs.readFileSync('certificates/public.pem'),
},
},
});