根据Featherjs Client Authentication docs,我已经在我的React App中设置并初始化了该模块。之后,点击Login
按钮,我以正确的数据格式调用推荐的app.authenticate(data)
方法。这会导致客户端软件包中Uncaught TypeError: Cannot read property 'create' of undefined
文件中的feathers.js
立即出现错误。
如果您能指出正确的方向,这将非常有帮助。
为此应用程序
:@feathersjs/client
包。 我已经尝试通过终端中的curl
请求服务器,并且以正确的凭据响应。之后,我通过React应用程序发出了AJAX请求,该请求也有效。如果我使用AJAX请求进行身份验证,则可以成功获取用户的token
和id
。
实际上,我可以继续进行下去。但是会出现问题,需要使用相同的令牌对用户进行重新身份验证并注销用户。我确实知道有解决方法。但是我想使用FeathersJs客户端,因为它提供了随时可以使用的reAuthenticate
和logout
方法。
启动羽毛客户端
import feathers from '@feathersjs/client';
const client = feathers();
client.configure(feathers.authentication({
storage: window.localStorage
}));
export default client;
App.js中的 login
函数称为
login = () => {
const self = this;
client.authenticate({
strategy: 'local',
email: 'hello@robin.com',
password: 'supersecret'
})
.then(data => {
console.log(data);
self.setState({
isAuthenticated: true
});
return data;
})
.catch(err => {
console.log(err);
self.setState({
isAuthenticated: false
});
});
};
调用该函数时,将引发以下错误:
在开发控制台中
Uncaught TypeError: Cannot read property 'create' of undefined
at AuthenticationClient.authenticate (feathers.js:2838)
at Object.App.login (App.js:50)
at onClick (Login.js:8)
在运行ReactJs应用程序的浏览器中,显示以下错误:
TypeError: Cannot read property 'create' of undefined
AuthenticationClient.authenticate
node_modules/@feathersjs/client/dist/feathers.js:2838
> 2838 | var promise = this.service.create(authentication).then(function (authResult) {
我在做错什么,如何利用FeathersJs客户?
答案 0 :(得分:1)
您忘记初始化REST或Socket.io客户端连接,如React Native API所示。应该是
import io from 'socket.io-client';
import feathers from '@feathersjs/feathers';
import socketio from '@feathersjs/socketio-client';
const socket = io('http://api.my-feathers-server.com', {
transports: ['websocket'],
forceNew: true
});
const client = feathers();
client.configure(socketio(socket));
client.configure(feathers.authentication({
storage: window.localStorage
}));
export default client;