【问题标题】:esBuild serve over HTTPSesBuild 通过 HTTPS 服务
【发布时间】:2022-07-12 18:50:06
【问题描述】:

esBuild 使得通过它自己的开发服务器处理 http 请求变得非常容易,例如

require('esbuild').serve({
  servedir: 'www',
}, {
  entryPoints: ['src/app.js'],
  outdir: 'www/js',
  bundle: true,
}).then(server => {
  // Call "stop" on the web server to stop serving
  server.stop()
})

在这种情况下如何启用 HTTPS 服务?我可以让它在端口 443 上服务,但我如何附加自签名证书?

【问题讨论】:

  • 您找到解决方案了吗?
  • @DavidMeents 我最终在一个终端中以监视模式 esbuild.build({watch: true}) 使用 esBuild,并在另一个终端中运行 http-server。它使运行 SSL pretty straightforward
  • $ http-server -p 8000 -S dist/
  • 仅供参考,esbuild 维护者提到的 github 上的相关票证超出了他的范围(恕我直言,这有点令人失望):github.com/evanw/esbuild/issues/1845

标签: https esbuild devserver


【解决方案1】:

我找到了两个对我有用的解决方案:

  1. 在额外文件或 esbuild 配置中使用 http-proxy。我在这里发现的限制,你不能同时使用esbuild的--serve--watchhttps://github.com/evanw/esbuild/issues/805),所以如果你需要自动重新加载/实时服务器功能,你必须自己创建这个,这有点复杂(https://github.com/evanw/esbuild/issues/802)

    httpProxy.createServer({
      target: {
        host: 'localhost',
        port: 3000
      },
      ssl: {
        key: fs.readFileSync('key.pem', 'utf8'),
        cert: fs.readFileSync('cert.pem', 'utf8')
      }
    }).listen(3001);
    
  2. 使用servor,此处仅用于 npm 脚本,但您也可以在 esbuild 配置中使用伺服器。请注意将您的证书文件命名为 servor.crtservor.key (https://github.com/lukejacksonn/servor/issues/79)。我更喜欢这个解决方案,因为更少的依赖、更简单的设置和已经内置的自动重新加载/实时服务器。

    "scripts": {
      "build": "esbuild --bundle src/index.tsx --outfile=public/bundle.js",
      "start": "npm run server & npm run build -- --watch",
      "server": "servor public index.html 3000 --reload --secure"
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 2023-03-06
    • 2018-03-31
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多