You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次使用WebSocket项目遇语法错误求助:import语句无法正常使用

问题根源与修复方案

先拆解下问题核心:

  1. ws是Node.js专属库,浏览器无法直接使用:你写的import WebSocket from 'ws'和const WebSocket = require('ws')都是Node.js环境的语法,浏览器本身自带原生WebSocket API,完全不需要引入这个第三方库。
  2. 重复定义变量+模块类型未匹配:client.js里同时混用了import和require两种导入方式,且HTML引入client.js时未配置模块类型,就算配置了也没用——因为ws库根本不能在浏览器环境运行。

修复步骤:

1. 重写client.js代码

直接删掉错误的导入语句,使用浏览器原生WebSocket:

// 无需任何导入,直接用浏览器原生WebSocket
const socket = new WebSocket('wss://example.com');

// 后续业务逻辑示例
socket.onopen = function() {
  console.log('连接成功');
  socket.send('Hello Server!');
};

socket.onmessage = function(event) {
  console.log('收到消息:', event.data);
};

socket.onerror = function(error) {
  console.error('连接错误:', error);
};

socket.onclose = function(event) {
  console.log('连接关闭:', event.code, event.reason);
};

2. 修正HTML的script标签

如果client.js里没有ES6模块语法(比如import/export),直接正常引入即可;如果用到了模块语法,就加上type="module":

<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
</head>
<body>
    <!-- 无模块语法时的引入方式 -->
    <script src="./client.js"></script>
    <!-- 有模块语法时的引入方式 -->
    <!-- <script type="module" src="./client.js"></script> -->
</body>
</html>

补充说明

你之前给websocket.js加了type='module',但报错的是client.js,等于没解决核心问题。另外要记住:只有在Node.js后端编写WebSocket服务时,才需要用到ws库;前端浏览器直接用原生API就足够了。

内容的提问来源于stack exchange,提问作者Rhiannon B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:22:55