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

相关推荐
骆驼爱记录2 天前
Word样式库不显示的8种修复方法
word·wps·新人首发
爱上妖精的尾巴2 天前
8-5 WPS JS宏 match、search、replace、split支持正则表达式的字符串函数
开发语言·前端·javascript·wps·jsa
鹏大师运维3 天前
信创桌面操作系统上的WPS外观界面配置
linux·运维·wps·麒麟·统信uos·中科方德·整合模式
连线Insight3 天前
从“模型竞赛”到“数据为王”:WPS 365如何帮企业挖掘数据金矿?
人工智能·wps
好大的月亮4 天前
wps在线表格使用AirScript填充图片
wps
TMT星球4 天前
WPS 365推出“AI医药报告写作助手”,撰写效率提升超60%
人工智能·wps
骆驼爱记录5 天前
Word侧边页码设置全攻略
前端·自动化·word·excel·wps·新人首发
龙之叶5 天前
关闭WPS自动弹出登录窗
wps
SUNTON_INDUSTRY5 天前
亲测口碑好的UPS备用电源智能锡膏柜
wps
骆驼爱记录6 天前
Word通配符技巧:高效文档处理指南
开发语言·c#·自动化·word·excel·wps·新人首发