Node.js Hapi.js应用注册hapi-auth-cookie时遇[1]"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
相关产品推荐
相关产品推荐

