如何正确引用gpu-browser.js?GPU构造函数报错求助
解决
GPU is not a constructor报错问题 1. 验证脚本是否成功加载
打开浏览器开发者工具(F12),切换到Network标签页,刷新页面后查找gpu-browser.min.js:
- 若显示404错误:检查文件路径是否匹配HTML文件的位置。比如HTML在子目录(如
src/index.html),路径需改为../node_modules/gpu.js/dist/gpu-browser.min.js;若在根目录,确认node_modules/gpu.js/dist/下确实存在该文件。 - 若加载成功:在Console标签执行
console.log(window.GPU),若返回undefined,说明脚本未正确暴露全局变量,大概率是版本兼容问题。
2. 调整gpu.js版本或引入方式
不同版本的gpu.js在浏览器中的全局暴露逻辑有差异:
- 若安装的是v3.x及以上版本,改用ES模块方式引入:
<script type="module"> import GPU from './node_modules/gpu.js/dist/gpu-browser.esm.js'; const gpu = new GPU(); // 后续内核创建代码... </script> - 若偏好传统脚本标签,可降级到v2.x版本(该版本默认在浏览器中暴露全局
GPU构造函数):npm uninstall gpu.js npm install gpu.js@2.16.0 --save
3. 排查变量名冲突
确认页面中没有其他脚本定义了GPU变量,覆盖了gpu.js的全局对象。可在你的脚本开头添加:
console.log('当前GPU变量:', GPU);
若输出不是构造函数,说明存在变量冲突,需修改其他脚本的变量名。
4. 补充未定义的矩阵变量
你的代码中a和b矩阵未定义,即使GPU问题解决也会报错,补充测试矩阵示例:
// 生成两个512x512的随机测试矩阵 const a = Array.from({ length: 512 }, () => Array.from({ length: 512 }, () => Math.random())); const b = Array.from({ length: 512 }, () => Array.from({ length: 512 }, () => Math.random())); const c = multiplyMatrix(a, b);
内容的提问来源于stack exchange,提问作者merb
相关产品推荐
相关产品推荐

