【发布时间】:2019-10-24 10:33:51
【问题描述】:
我正在通过以下方式创建我的服务器:
const createServer = options => {
const { logSeverity } = options;
const server = Fastify({
ignoreTrailingSlash: true
});
server.listen(5000, err => {
if (err) {
server.log.error(err);
console.log(err);
process.exit(1);
}
});
server.register(AutoLoad, {
dir: path.join(__dirname, "api", "routes")
});
server.register(jwt, {
secret: nconf.get("secrets.jwt")
});
};
在./some/child/path/signToken.js 我的一个模块中,我这样做了:
const nconf = require("nconf");
const jwt = require("fastify-jwt");
const signToken = payload => {
fastify.jwt.sign(payload, nconf.get("secrets.jwt"), (err, token) => {
if (err) throw err;
const response = {
userId: payload.user._id,
username: payload.user.username,
token
};
return response;
});
};
module.exports = { signToken };
这会引发错误,Cannot read property 'sign' of undefined。
根据docs,
This will decorate your fastify instance with the standard jsonwebtoken methods
我在这里做错了什么?这可能是不可能的,因为我正在创建一个服务器,而服务器是我的 fastify 实例?然后我是否必须以某种方式导入server?
【问题讨论】:
-
问这个很傻,但你有没有记住 const fastify = require('fastify')
-
我以前有,摆脱它,因为它仍然抛出 undefined 两种方式,一点也不傻
-
我认为这是 npm [npmjs.com/package/fastify-jwt] 中的一个很好的例子。可能是模块的使用存在问题
-
如何加载
signToken.js?目前fastify.jwt.sign变量不存在