首次使用WebSocket项目遇语法错误求助:import语句无法正常使用
问题根源与修复方案
先拆解下问题核心:
ws是Node.js专属库,浏览器无法直接使用:你写的import WebSocket from 'ws'和const WebSocket = require('ws')都是Node.js环境的语法,浏览器本身自带原生WebSocketAPI,完全不需要引入这个第三方库。- 重复定义变量+模块类型未匹配:
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
相关产品推荐
相关产品推荐

