wps加载项及解决http://127.0.0.1:58890/version提示ERR_CONNECTION_REFUSED

wps加载项及解决http://127.0.0.1:58890/version提示ERR_CONNECTION_REFUSED

wpsjs安装步骤

1、全局安装wpsjs,注意node版本,我的是21+
install wpsjs -g

2、创建wpsjs项目,wpsjzx是我项目的命名
wpsjs create wpsjzx

3、切换的wpsjzx目录
cd wpsjzx

4、运行项目
wpsjs debug

5、打包,生成wps-addon-build文件,可选择在线插件还是离线插件,我选的是在线
wpsjs build

6、发布部署,生成wps-addon-publish文件
wpsjs publish

wpsjs -h 可查看帮助

为在线打包搭建Express框架服务器

1、全局安装express脚手架,安装完成输入express -h显示帮助信息
npm install -g express-generator

2、创建名称为serve的Express应用
express --view=ejs serve

3、根据提示依次输入命令启动项目,浏览器打开127.0.0.1:3000或者本机ip地址访问项目

4、上传文件到serve项目

把wpsjzx里wps-addon-build和wps-addon-publish下的文件都放到serve项目的publish目录

5、更改加载项服务器地址

编辑publish.html代码,找到LoadPublishAddons函数改代码

服务器地址应改为本机ip地址:http://192.168.10.5:3000/

后续可以添加多个加载项项目、更改加载项服务器地址

6、加载项服务器部署完毕,管理加载项从浏览器打开192.168.10.5:3000/publish.html和http://192.168.10.5:3000/ribbon.xml

上面写的是部署在本地,但是当部署到服务器,遇到的问题是访问不到接口http://127.0.0.1:58890/version、http://127.0.0.1:58890/publishlist等访问本地的接口,比如`http://127.0.0.1:58890/version提示ERR_CONNECTION_REFUSED`和`not allowed to launch 'ksowpscloudsvr://start=RelayHttpServer' because a user gesture is required.`

这是因为现代浏览器(Chrome/Edge/Firefox 等)为了安全,要求从网页唤起外部应用(通过自定义协议 ksoWPSCloudSvr://)必须由"用户手势"触发------例如用户点击或按键事件。脚本在非交互上下文(页面加载时、定时器回调、XHR 回调等)直接设置 window.location 或调用 Start-Process 等会被阻止并报该错误。

正确的触发方式如下:

javascript 复制代码
<!-- 用户交互按钮:用于在浏览器中以用户手势唤起 WPS 本地服务,解决非交互唤起被阻止的问题 -->
    <div style="margin-bottom:12px;">
        <button id="startRelayBtn" style="padding:8px 12px; font-size:14px; cursor:pointer;">启动 WPS 本地服务并重试</button>
    </div>
    <script>
        // 确保按钮在用户点击时同步触发自定义协议(满足 user gesture 要求)
        (function () {
            var btn = document.getElementById('startRelayBtn');
            if (!btn) return;
            btn.addEventListener('click', function () {
                try {
                    // 立即唤起 WPS 本地服务
                    InitWpsCloudSvr();
                } catch (e) {
                    console.error('InitWpsCloudSvr 调用失败:', e);
                }
                // 给 WPS 启动并监听端口一些时间,然后重试 InitSdk()
                setTimeout(function () {
                    try {
                        InitSdk();
                    } catch (e) {
                        console.error('InitSdk 调用失败:', e);
                    }
                }, 3000);
            });
        })();
    </script>

将代码贴入到publish.html中,再触发按钮就可以解决了

这里是有整合自己踩的坑,也借鉴了这篇文章https://blog.csdn.net/huaermeier/article/details/132502705

相关推荐
letian880816 小时前
WPS2026专业增强版!一键安装,自动授权,内置VBA组件!
wps
Jo乔戈里1 天前
Windows系统弹窗自动点否?问题可能在WPS
wps
hPw0eKIqD2 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET中的区域、行和列
excel·wps
金豆呀3 天前
WPS批量提取Word文档内容生成固定格式Excel表格
word·excel·wps
红莲凪是4 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET IExcelRange 高级应用
python·excel·wps
xiaopai9455 天前
WPS做工程项目台账哪些能管、哪些管不住?
wps·工程项目·建米软件
Sunflower028 天前
如何解决word/WPS word 中表格跳到下一页(上一页有大篇幅空白)
word·wps
码上得天下8 天前
如何在默认打开方式设置中去掉已失效\已删除的应用选项?(比如WPS)
wps
PythonFun17 天前
WPS浏览器助手,AI智能阅读新体验
人工智能·wps
TMT星球18 天前
金山办公持续落子AI办公:灵犀专业版、WPS Comate同日发布
大数据·人工智能·wps