Dify 聊天机器人嵌入 WordPress:守护脚本不生效的完整排错指南

👁 193 次阅读

dify-wordpress

你按照 Dify 官方文档把嵌入代码塞进了 WordPress,聊天窗口能弹出来,但一刷新页面会话就丢了——每次都得重新开始对话。更诡异的是,按 F12 打开 Console,里面安安静静,连个报错都没有。

近期我们在 aibsz.com 部署 Dify 时就踩了这个坑,前后排查了好几轮,最终定位到问题。这篇文章把排查思路完整记录下来,希望能帮你少走弯路。

## 问题现象

刷新页面后,Dify 聊天窗口丢失上下文,之前和 AI 的对话历史全部清空。但在同一个页面里不刷新,对话是正常的。

## 排查第一步:确认守护脚本是否加载

Dify 的嵌入式方案依赖一个会话守护脚本(通常叫 `dify_session.js`),它负责把 session ID 存到 localStorage,页面刷新后再读回来,从而实现”刷新不丢会话”。

打开浏览器 Console(F12 → Console),执行:

“`
document.querySelector(‘script[src=”/dify_session.js”]’)
“`

如果返回 `null`,说明**脚本根本没被加载**——这就是根因。

我们当时就是卡在这一步。脚本文件没有部署到服务器上,后面的一切逻辑自然无从谈起。

## 排查第二步:确认 localStorage 是否有 Session ID

紧接着在 Console 执行:

“`
localStorage.getItem(‘dify_sid_’ + location.pathname.split(‘/’).pop())
“`

返回 `null` 进一步印证:守护脚本没跑起来,localStorage 里空空如也,刷新时自然拿不到之前的会话。

## 排查第三步:检查文件是否真的存在

通过 SFTP 或主机文件管理器,进入网站根目录(WordPress 通常在 `/www/wwwroot/你的域名/`),看看 `dify_session.js` 这个文件在不在。

常见的几种情况:

1. **文件根本没传上去**——这是最常见的问题。Dify 后台提供的嵌入代码里引用了 `dify_session.js`,但这个文件需要你手动下载并上传到服务器根目录,很多人漏了这一步。

2. **文件传了,但路径不对**——比如传到了 `/wp-content/themes/你的主题/` 下面,而 ``
3. **验证加载**——刷新页面,Console 执行第一步的检查命令,应该返回一个 `

🤖 嘟嘟客服
滚动至顶部
🤖 嘟嘟客服
🤖 嘟嘟客服
';i.value='';m.innerHTML+='
...
';fetch('/dify-chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({query:q,user:'w'+Date.now()})}).then(function(r){return r.json()}).then(function(d){var a=d.answer||'暂时无法回复';m.removeChild(m.lastChild);m.innerHTML+='
'+a+'
'}).catch(function(){m.removeChild(m.lastChild);m.innerHTML+='
网络异常
'})">发送