我正在使用ES6类设置一个feathers-client,我想在我的React-Redux-Webpack应用程序的操作中导入该类。
我已经使用令人敬畏的Feathers支架设置了REST api。
不幸的是,我在浏览器中遇到错误,这毁了我的一天。我究竟做错了什么?
未捕获的TypeError:_client2.default.hooks不是函数
谁能帮我吗?为什么在这里未定义hooks
(以及rest
)?软件包似乎已正确安装...
以下是个好主意吗?
// src/middleware/api.js
import hooks from 'feathers-hooks'
import feathers from 'feathers/client'
import rest from 'feathers-rest/client'
class API {
constructor() {
const connection = process.env.FEATHERS_API_URL
this.app = feathers()
.configure(feathers.hooks())
.configure(rest(connection).fetch(fetch))
.configure(feathers.authentication({
type: 'local',
storage: window.localStorage,
}))
}
}
可能是某些软件包不兼容吗?
"feathers": "^2.0.3",
"feathers-authentication": "^0.7.12",
"feathers-client": "^1.8.0",
"feathers-configuration": "^0.3.3",
"feathers-errors": "^2.5.0",
"feathers-hooks": "^1.7.1",
"feathers-rest": "^1.5.2",
"feathers-sequelize": "^1.4.0"
我想知道的另一件事是我们是否总是需要向
rest
函数提供路径?是否可以默认使用配置文件中使用的路径?在同一项目中同时包含我的客户端和服务器端代码,给它添加路径有点怪异... 最佳答案
@feathersjs/client
是一个捆绑包,其中包含一组Feathers标准模块(例如auth,rest,socketio客户端),可以直接在浏览器中使用(请参见the documentation here)。
似乎您正在尝试使用模块加载器which is documented here,因此可以仅导入模块,而不是使用预先捆绑的包(所有内容均位于feathers.
命名空间中,例如feathers.hooks
,feathers.authentication
等)。您需要并配置它们:
// src/middleware/api.js
import feathers from '@feathersjs/feathers'
import rest from '@feathersjs/rest-client'
import authentication from '@feathersjs/authentication-client'
class API {
constructor() {
const connection = process.env.FEATHERS_API_URL
this.app = feathers()
.configure(rest(connection).fetch(fetch))
.configure(authentication({
type: 'local',
storage: window.localStorage,
}))
}
}
如果
rest
在同一域上运行,则不需要基本URL。默认情况下,它是一个空字符串。