如何测试生产环境Confluence Cloud插件及解决加载失败问题
解决生产环境Confluence插件测试问题的思路
我来帮你理清这个问题的核心原因,以及正确测试生产环境插件的步骤:
首先,为什么会出现“Tunnel ...ngrok.io not found”报错?
你修改了atlassian-connect.json里的baseUrl为S3地址,但仍然运行npm start——这个命令是本地开发专用的,它会自动启动ngrok隧道,并且强制把atlassian-connect.json里的baseUrl覆盖成ngrok的临时域名。这就导致了配置冲突:Confluence试图访问你设置的S3地址,但npm start的逻辑还在找ngrok隧道,最终报错。
生产环境插件的正确测试步骤
1. 打包生产环境代码
先运行项目的生产打包命令,生成优化后的静态资源:
npm run build
这个命令会在项目的dist(或类似)目录下生成所有需要部署的文件,包括插件的JS、CSS、HTML以及atlassian-connect.json。
2. 配置并上传文件到S3
- 开启S3静态网站托管:在S3桶的“属性”里找到静态网站托管,启用它,设置索引文档为
index.html(如果插件有需要,还要设置错误文档)。 - 配置CORS规则:确保S3桶允许你的Confluence测试域名(
my_project.atlassian.net)跨域请求资源。示例CORS规则可以这样设置:[ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET", "POST", "OPTIONS"], "AllowedOrigins": ["https://my_project.atlassian.net"], "ExposeHeaders": [] } ] - 上传打包文件:把
dist目录下的所有文件上传到S3桶的根目录,确保所有文件的访问权限设置为“公开可读”(或者通过CloudFront配置更安全的访问策略)。 - 更新
atlassian-connect.json的baseUrl:把这个文件里的baseUrl改成S3的静态网站域名(比如https://your-bucket-name.s3-us-west-2.amazonaws.com,或者你配置的CloudFront自定义域名),然后重新上传到S3。
3. 在Confluence测试环境重新安装插件
- 先卸载之前安装的本地版本插件,避免冲突。
- 然后通过两种方式安装S3托管的版本:
- 方式一:使用Confluence的“上传插件”功能,直接上传S3上的
atlassian-connect.json文件(或者输入该文件的公开URL)。 - 方式二:利用你提到的“市场列表”,将插件添加到列表中,然后从列表安装。
- 方式一:使用Confluence的“上传插件”功能,直接上传S3上的
- 安装完成后,刷新Confluence页面,检查浏览器控制台是否有资源加载错误,验证插件功能是否正常。
额外的测试建议
- 如果需要更贴近生产环境的预发布测试,可以使用Atlassian的Staging环境(如果你的订阅支持),或者创建一个独立的Confluence测试站点来模拟生产环境的配置。
- 确保插件代码中的静态资源引用都是基于
baseUrl的绝对路径,或者在打包时配置了正确的publicPath,避免出现资源404错误。 - 查看S3的访问日志,如果插件加载失败,可以通过日志确认Confluence是否成功请求了S3资源,以及是否有权限或路径错误。
内容的提问来源于stack exchange,提问作者Tim Nuwin




