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

使用Node.js运行AWS NICE DCV web客户端SDK报window未定义错误

问题根因

报错的核心原因是NICE DCV Web SDK 是专为浏览器环境设计的前端SDK,完全不支持直接在原生Node.js环境运行。
Node.js作为服务端/本地脚本运行时,本身没有实现浏览器内置的window全局对象、Web Audio API、DOM API等专属Web接口,SDK初始化第一步就会检测window.webkitAudioContext这类浏览器属性,自然直接抛出ReferenceError: window is not defined,和配置遗漏无关,纯粹是运行环境选择错误。

解决方法

按优先级从高到低选择对应方案即可:

  • 优先按照SDK设计的正常方式运行:不要用node 你的脚本名.js命令直接跑引入了dcv.js的文件,把代码放到前端页面里通过浏览器加载运行
    1. 新建HTML入口文件,通过script标签引入本地的dcv.js资源
    2. 把你写的DCV连接逻辑放到页面script标签中,或者引入对应的前端JS业务文件
    3. 启动本地静态文件服务(可直接用npx serve、VS Code Live Server、Nginx等任意静态服务工具),通过浏览器访问对应服务地址运行代码即可,不要直接双击打开本地HTML文件,避免触发跨域限制导致功能异常。
  • 如果你只是需要在Node环境做SDK逻辑的单元测试、服务端渲染预加载,可以用jsdom等工具模拟浏览器全局环境,手动注入window等必要全局对象后再加载SDK。注意这种方案仅能跑通基础逻辑校验,音视频流渲染、输入事件捕获这类强依赖浏览器底层能力的功能无法正常工作,核心业务逻辑还是必须放到真实浏览器里跑。
    环境注入参考代码:
    const { JSDOM } = require('jsdom');
    const mockDom = new JSDOM('<!DOCTYPE html><html><body></body></html>');
    // 挂载浏览器全局对象到Node运行上下文
    global.window = mockDom.window;
    global.document = mockDom.window.document;
    global.navigator = mockDom.window.navigator;
    global.HTMLElement = mockDom.window.HTMLElement;
    // 环境准备完成后再引入DCV SDK
    const dcv = require('./dcvjs/dcv.js');
    
  • 如果你需要实现服务端侧的DCV会话管理、鉴权等能力,不要使用Web SDK,更换为对应场景的服务端SDK即可,Web SDK的唯一作用就是在用户浏览器侧完成DCV会话连接、远端桌面/应用流的渲染交互。

提醒:你参考的所有Web SDK相关示例,默认运行环境都是用户端浏览器,没有任何Node.js脚本环境直接运行的样例,不要把前端SDK当成Node.js模块直接引入执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:09:21