使用 Passport LocalStrategy、knex 和 postgres 时出现意外令牌错误
Unexpected token error using Passport LocalStrategy, knex, and postgres
我正在尝试使用本地护照策略和到 postgresql 的 knex 连接在 nodejs 应用程序上进行用户身份验证。以下是对应用程序文件以及 LocalStrategy 实例的依赖项:
index.js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
session = require('express-session'),
passport = require('passport')
bcrypt = require('bcryptjs')
LocalStrategy = require('passport-local').Strategy;
db = require('./db');
queries = require('./queries');
app.use(passport.initialize());
app.use(passport.session());
options = {};
passport.use(new LocalStrategy(options, (username, password, done) =>{
queries.findOne().then((user)) => {
console.log(user)
if (!user) return done(null, false);
if (!autHelpers.comparePass(password, user.password)) {
return done(null, false);
} else {
return done(null, user);
}
}
}
));
在查询文件中,我放置了 findOne() 函数来查找用户
queries.js
const knex = require ('./db');
module.exports = {
findOne() {
return knex('users').where("username", username).first()
}
}
但是,运行 应用程序在控制台中出现以下错误:
.getOne()
SyntaxError: Unexpected token .
at createScript (vm. js:80:10)
...
似乎由于某种原因它不接受queries.findOne()
声明。我在 => {}
中尝试了没有语句的 passport.use
,它不会导致应用程序出错。
我应该用不同的方式写 queries.findOne()
吗?我也想过将这个函数包装在 app.use()
中,但我觉得这不合逻辑。
好像我在某处打错了字,但我尝试的一切都进入了死胡同,我似乎无法弄清楚这个简单的问题。
错误可能来自 promise 语法:
queries.findOne().then((user)) => {
...
})
必须改写为:
queries.findOne().then((user) => {
...
})
下面是完整的块:
passport.use(new LocalStrategy(options, (username, password, done) =>{
queries.findOne().then((user) => {
console.log(user)
if (!user) return done(null, false);
if (!autHelpers.comparePass(password, user.password)) {
return done(null, false);
} else {
return done(null, user);
}
}) // There was also a missing end parenthesis here
}));
为防止将来出现此类语法问题,您可以使用 eslint.
等 linter
我正在尝试使用本地护照策略和到 postgresql 的 knex 连接在 nodejs 应用程序上进行用户身份验证。以下是对应用程序文件以及 LocalStrategy 实例的依赖项:
index.js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
session = require('express-session'),
passport = require('passport')
bcrypt = require('bcryptjs')
LocalStrategy = require('passport-local').Strategy;
db = require('./db');
queries = require('./queries');
app.use(passport.initialize());
app.use(passport.session());
options = {};
passport.use(new LocalStrategy(options, (username, password, done) =>{
queries.findOne().then((user)) => {
console.log(user)
if (!user) return done(null, false);
if (!autHelpers.comparePass(password, user.password)) {
return done(null, false);
} else {
return done(null, user);
}
}
}
));
在查询文件中,我放置了 findOne() 函数来查找用户
queries.js
const knex = require ('./db');
module.exports = {
findOne() {
return knex('users').where("username", username).first()
}
}
但是,运行 应用程序在控制台中出现以下错误:
.getOne()
SyntaxError: Unexpected token .
at createScript (vm. js:80:10)
...
似乎由于某种原因它不接受queries.findOne()
声明。我在 => {}
中尝试了没有语句的 passport.use
,它不会导致应用程序出错。
我应该用不同的方式写 queries.findOne()
吗?我也想过将这个函数包装在 app.use()
中,但我觉得这不合逻辑。
好像我在某处打错了字,但我尝试的一切都进入了死胡同,我似乎无法弄清楚这个简单的问题。
错误可能来自 promise 语法:
queries.findOne().then((user)) => {
...
})
必须改写为:
queries.findOne().then((user) => {
...
})
下面是完整的块:
passport.use(new LocalStrategy(options, (username, password, done) =>{
queries.findOne().then((user) => {
console.log(user)
if (!user) return done(null, false);
if (!autHelpers.comparePass(password, user.password)) {
return done(null, false);
} else {
return done(null, user);
}
}) // There was also a missing end parenthesis here
}));
为防止将来出现此类语法问题,您可以使用 eslint.
等 linter