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

相关推荐
专注VB编程开发20年21 小时前
WPS 2024 Windows版UI用QT5和自研DirectUI-vba,jsa
qt·vba·wps·jsa·directui
扬帆破浪2 天前
麒麟系统安装察元 WPS AI 文档助手:免费、开源、离线部署说明
人工智能·开源·wps
扬帆破浪2 天前
免费开源的WPS AI 插件,离线安装、多系统与内网模型
人工智能·开源·wps
Evonso2 天前
Excel按照日期隔行颜色规则
wps
hashiqimiya3 天前
wps修改默认的字体号让以后的默认都是4号字体并修改间距
wps
骆驼爱记录4 天前
3步轻松去除WPS段落左侧符号
自动化·word·wps·新人首发
骆驼爱记录4 天前
表格居中无效的5大原因及解决方案
自动化·word·wps·新人首发
热爱生活的五柒6 天前
wps如何配置zotero,目前word中能看到zotero插件,但是wps中看不到
wps·zotero
weifont8 天前
太烧token了,我用Ai写了一个vscode的插件wps-editor(已开源)
人工智能·vscode·wps
骆驼爱记录10 天前
Word目录:标题加粗页码不加粗技巧
自动化·word·excel·wps·新人首发