You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Hapi.js应用注册hapi-auth-cookie时遇[1]"attributes"必填错误

解决hapi-auth-cookie注册时"attributes"必填的错误

看起来你遇到的问题是因为导入hapi-auth-cookie的方式不正确,导致传递给server.register()的不是一个有效的Hapi插件对象,从而触发了"attributes"必填的错误。

问题原因

你当前使用了命名空间导入:

import * as AuthCookie from 'hapi-auth-cookie';

但hapi-auth-cookie是以默认导出的方式提供插件对象的,所以AuthCookie在这里是一个包含default属性的对象,而不是插件本身。当你把这个对象传给server.register()时,Hapi无法识别它的插件属性(name/version),就会抛出"attributes是必填项"的错误。

而Inert和Bell能正常注册,是因为它们的导出方式或者你的导入方式刚好匹配了Hapi的插件要求。

解决方案

有两种方式可以修复这个问题:

方案1:使用默认导入

把导入语句改成默认导入,直接获取插件对象:

import AuthCookie from 'hapi-auth-cookie';

然后保持注册代码不变:

pluginPromises.push(server.register(AuthCookie));

方案2:使用命名空间导入的default属性

如果你必须保留命名空间导入的写法,可以直接使用AuthCookie.default来获取插件对象:

pluginPromises.push(server.register(AuthCookie.default));

额外提醒

注册完hapi-auth-cookie插件后,你还需要配置认证策略才能实际使用它,比如把你定义的authCookieOptions用上:

// 在所有插件注册完成后添加这段代码
server.auth.strategy('session', 'cookie', authCookieOptions);
// 可选:设置默认认证策略
server.auth.default('session');

这样就能顺利完成hapi-auth-cookie的注册和配置了。

内容的提问来源于stack exchange,提问作者M Sasidhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:01:38