我现在正在做FeathersJS聊天应用程序教程,但是我基于Mongoose。
可以,我可以创建用户,进行身份验证等,但是此时,我想实现gravatar挂钩,当我要启动服务器时,我会失败。
我已经复制并粘贴了所有代码,这是运行服务器时的错误。
Users.hook.js
const { authenticate } = require('@feathersjs/authentication').hooks;
const { hashPassword, protect } = require('@feathersjs/authentication-local').hooks;
const gravatar = require('../../hooks/gravatar');
module.exports = {
before: {
all: [],
find: [ authenticate('jwt') ],
get: [ authenticate('jwt') ],
create: [ hashPassword(), gravatar() ],
update: [ hashPassword(), authenticate('jwt') ],
patch: [ hashPassword(), authenticate('jwt') ],
remove: [ authenticate('jwt') ]
},
after: {
all: [
// Make sure the password field is never sent to the client
// Always must be the last hook
protect('password')
],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
};
Gravatar.js
// Use this hook to manipulate incoming or outgoing data.
// For more information on hooks see: http://docs.feathersjs.com/api/hooks.html
// We need this to create the MD5 hash
const crypto = require('crypto');
// The Gravatar image service
const gravatarUrl = 'https://s.gravatar.com/avatar';
// The size query. Our chat needs 60px images
const query = 's=60';
module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
return async context => {
// The user email
const { email } = context.data;
// Gravatar uses MD5 hashes from an email address to get the image
const hash = crypto.createHash('md5').update(email).digest('hex');
context.data.avatar = `${gravatarUrl}/${hash}?${query}`;
// Best practise, hooks should always return the context
return context;
};
};
错误
/mnt/c/Users/user/Documents/_coding/feathersJSChat/server/src/hooks/gravatar.js:13
return async context => {
^^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/mnt/c/Users/user/Documents/_coding/feathersJSChat/server/src/services/users/users.hooks.js:5:18)
非常感谢,对不起,我的英语不好。
最佳答案
就像basics guide一样,为聊天应用程序显示的代码仅适用于Node 8.0.0(node --version
)或更高版本。可以在prerequisites seciton中找到更多信息。