已引入Prebid.js仍报Uncaught ReferenceError: pbjs is not defined怎么办?
Prebid.js 引入后
pbjs is not defined 报错排查方案 - 检查代码执行顺序:确保所有调用
pbjs对象的逻辑,执行时机晚于Prebid.js资源加载完成的时间。如果是同步引入Prebid.js,要把它的<script>标签放在所有调用pbjs的脚本之前;如果是异步引入,要确保调用逻辑写在异步加载成功的回调函数中。 - 提前初始化全局桩对象:异步加载Prebid.js时,必须在页面
<head>最顶部先插入桩代码,避免加载过程中调用pbjs时报错:
后续所有pbjs的操作都可以推入var pbjs = pbjs || {}; pbjs.que = pbjs.que || [];pbjs.que队列,Prebid.js加载完成后会自动执行队列中的任务。 - 检查资源是否加载成功:打开浏览器 devtools 网络面板,确认Prebid.js的资源请求返回正常,没有被广告拦截插件、CSP策略、跨域规则拦截。资源加载失败的情况下不会注入全局
pbjs对象。 - 检查模块化场景下的全局挂载:如果使用Webpack、Vite等模块化打包工具引入Prebid.js,默认不会挂载到全局window对象,需要手动挂载后才可以全局访问:
window.pbjs = require('prebid.js').default;不同版本引入写法可能有差异,可对照包的导出规则调整。 - 排查自定义构建问题:如果是自行编译的Prebid.js产物,确认编译配置没有关闭全局导出,构建过程无报错,可使用官方预构建的产物做对照测试,排除构建环节导致的异常。
内容的提问来源于stack exchange,提问作者Omer Ozhan
相关产品推荐
相关产品推荐

