Node.js中Pug模板动态渲染href(token无效)问题求助
解决Pug模板中邮件链接动态token不生效的问题
嘿,我之前用Pug做邮件模板时也碰到过一模一样的属性变量插值问题,让我帮你搞定这个token无效的麻烦~
问题根源
你在文本里用#{name}能正常显示,是因为Pug的#{variable}语法专门用于标签内部的文本内容插值;但在HTML属性(比如href)里,这种写法不会被Pug正确解析——#{token}没有被替换成实际的token值,反而把#保留在了URL里。浏览器会把#后面的内容当成页面锚点,不会发送给服务器,所以服务器收到的请求里没有有效token,才会提示“invalid token at #”。
正确的解决方法
只需要修改Pug模板里的链接写法,以下几种方式任选其一都能解决:
1. 字符串拼接方式
直接在属性里用+拼接基础URL和token变量:
a.button(href='xyz.com/verify/' + token, target='_blank') Activate your account
2. ES6模板字符串方式
用反引号包裹模板字符串,通过${token}完成插值:
a.button(href=`xyz.com/verify/${token}`, target='_blank') Activate your account
3. 属性绑定方式
用=明确绑定属性值,更贴合Pug的语法习惯:
a.button(target='_blank', href= 'xyz.com/verify/' + token) Activate your account
额外验证小技巧
为了确认token确实被正确传递到了模板,你可以临时加一行调试代码:
| 调试Token值:#{token}
如果能正常显示token的内容,说明变量传递环节没问题,只需要修改链接写法就可以了。
内容的提问来源于stack exchange,提问作者Killer Beast
相关产品推荐
相关产品推荐

