在Power BI自定义视觉对象中添加request库遇问题求助
解决Power BI自定义视觉中request库导入的编译错误
嘿,我刚好碰到过类似的Power BI自定义视觉开发问题,给你梳理下怎么解决!
首先,你遇到的第一个错误Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system',本质是因为Power BI自定义视觉的TypeScript配置里启用了out(或outFile)选项来合并输出文件,而这个选项仅支持amd或system模块类型——你改成system是对的,但后续还有问题,核心原因是request库本身为Node.js设计,浏览器环境不兼容它的依赖,而且request已经在2020年停止维护了,这才是真正的痛点。
下面给你两个可行的方案,优先推荐第一个:
方案一:替换为浏览器友好的HTTP库(强烈推荐)
直接换掉request,用axios这类天生支持浏览器环境的HTTP库,迁移成本低还更可靠:
- 先卸载request:
npm uninstall request - 安装axios:
npm install axios --save - 在你的TypeScript代码里导入并使用(API和request类似,上手快):
import axios from 'axios'; // 示例GET请求 axios.get('https://your-api-url.com/data') .then(res => { console.log('请求结果:', res.data); // 这里处理你的数据逻辑 }) .catch(err => { console.error('请求失败:', err); }); - 不用修改
pbiviz.json的externalJS配置,axios会被Power BI的打包工具正确处理。
方案二:硬扛request的浏览器适配(不推荐)
如果一定要继续用request,得用它的浏览器兼容分支,还要调整配置:
- 安装浏览器版的request:
npm install request-browserify --save - 修正
tsconfig.json的配置,确保这些关键项正确:{ "compilerOptions": { "module": "system", "moduleResolution": "node", "target": "es5", "outFile": "./dist/visual.js", // 保持你的原有输出路径 "allowSyntheticDefaultImports": true, "esModuleInterop": true } } - 更新
pbiviz.json的externalJS路径:"externalJS": [ "node_modules/request-browserify/index.js" ] - 代码里改导入路径:
import * as request from 'request-browserify';
另外还要注意:Power BI自定义视觉运行在浏览器沙箱里,如果你调用外部API,必须确保API支持CORS跨域,否则会出现请求被拦截的错误。
内容的提问来源于stack exchange,提问作者Graffl
相关产品推荐
相关产品推荐

