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