使用ES6 import导入obs-websocket-js时遇Unexpected token '*'错误求助
修复OBS扩展中obs-websocket-js的ES6导入问题
方案1:用UMD兼容版本直接调用
Kruiz Control加载的网页通常处于非模块环境,ES6 import容易出问题,改用UMD版本的库:
- 在HTML里先引入UMD脚本(本地文件或直接用打包好的版本)
<script src="node_modules/obs-websocket-js/dist/obs-websocket.umd.js"></script>
- 脚本里直接实例化,注意
await必须放在async函数内
async function connectOBS() { const obs = new OBSWebSocket(); try { await obs.connect('IP_REMOVED', 'PASSWORD_REMOVED'); obs.on('CurrentProgramSceneChanged', scene => { console.log(scene); }); } catch (err) { console.error('OBS连接失败:', err); } } connectOBS();
方案2:强制启用模块模式并修正导入路径
如果一定要用ES6 import,做以下调整:
- HTML中的脚本标签必须声明为模块类型
<script type="module" src="你的脚本文件路径.js"></script>
- 导入时指定正确的ES模块入口文件
import OBSWebSocket from './node_modules/obs-websocket-js/dist/obs-websocket.esm.js'; async function initOBS() { const obs = new OBSWebSocket(); try { await obs.connect('IP_REMOVED', 'PASSWORD_REMOVED'); obs.on('CurrentProgramSceneChanged', scene => { console.log(scene); }); } catch (err) { console.error(err); } } initOBS();
方案3:原生WebSocket直接对接
如果obs-websocket-js的导入问题始终无法解决,绕开库直接用原生WebSocket实现场景切换监听:
const ws = new WebSocket('ws://IP_REMOVED:4455'); ws.onopen = () => { // 发送认证请求 ws.send(JSON.stringify({ op: 1, d: { rpcVersion: 1, authentication: 'PASSWORD_REMOVED' } })); // 订阅场景切换事件 ws.send(JSON.stringify({ op: 5, d: { eventSubscriptions: 1 << 2 } })); }; ws.onmessage = (event) => { const data = JSON.parse(event.data); if (data.op === 0 && data.t === 'CurrentProgramSceneChanged') { console.log(data.d); } };
内容的提问来源于stack exchange,提问作者SyntaxicalEcho
相关产品推荐
相关产品推荐

