首页 > 解决方案 > 使用 websocket 的 Gatsby 生产构建警告

问题描述

我在我的 Gatsby 网站上实现了一个 websocket(我正在使用 Websocket-Node 包,socket.io 不是一个选项),它可以工作,但是当我运行build命令时,我收到以下警告

warn WebpackError: Unsafe builtin usage fs.readdirSync
    at test-project/node_modules/node-gyp-build/index.js:73:1
    at test-project/node_modules/node-gyp-build/index.js:64:1
    at test-project/node_modules/node-gyp-build/index.js:40:1
    at test-project/node_modules/node-gyp-build/index.js:21:1
    at test-project/node_modules/bufferutil/index.js:4:44
    at test-project/webpack/bootstrap:19:1
    at test-project/node_modules/websocket/lib/WebSocketFrame.js:17:18
    at test-project/webpack/bootstrap:19:1
    at test-project/node_modules/websocket/lib/WebSocketConnection.js:20:22
    at test-project/webpack/bootstrap:19:1
    at test-project/node_modules/websocket/lib/WebSocketRequest.js:21:27
    at test-project/webpack/bootstrap:19:1
    at test-project/node_modules/websocket/lib/WebSocketServer.js:22:24
    at test-project/webpack/bootstrap:19:1
    at test-project/node_modules/websocket/lib/websocket.js:2:22
    at test-project/webpack/bootstrap:19:1

  71 | function readdirSync (dir) {
  72 |   try {
> 73 |     return fs.readdirSync(dir)
     | ^
  74 |   } catch (err) {
  75 |     return []
  76 |   }

下面这个

warn WebpackError: Unsafe builtin usage http.request
    at test-project/node_modules/websocket/lib/WebSocketClient.js:254:1
    at test-project/node_modules/websocket/lib/W3CWebSocket.js:62:1
    at test-project/src/utils/hub.js:6:16
    at test-project/webpack/bootstrap:19:1
    at test-project/webpack/bootstrap:19:1
    at test-project/webpack/bootstrap:19:1
    at test-project/webpack/bootstrap:19:1
    at test-project/webpack/bootstrap:19:1
    at test-project/.cache/_this_is_virtual_fs_path_/$virtual/sync-requires.js:7:49
    at test-project/webpack/bootstrap:19:1
    at test-project/.cache/static-entry.js:11:22

  252 |     }
  253 |
> 254 |     var req = this._req = (this.secure ? https : http).request(requestOptions);
      | ^
  255 |     req.on('upgrade', function handleRequestUpgrade(response, socket, head) {
  256 |         self._req = null;
  257 |         req.removeListener('error', handleRequestError);

我尝试使用 gatsby 推荐的解决方案,包括使用@loadable/component库或在文件中添加虚拟组件配置,gatsby-config.js但警告仍然存在。

标签: websocketgatsby

解决方案


推荐阅读