Issue with ES6 (Babel) import directive...
Panoplos opened this issue · 1 comments
Panoplos commented
I've just starting playing with koa-passport in a ES6 (Babel) based React project I am working on, and I have run into an issue when using ES6 module import syntax as follows:
import * as passport from 'koa-passport'
async function fetchUser(id) {
// Todo: This is first test code. Implement store logic...
return {
id: 1,
username: process.env.USERNAME,
password: digest(process.env.USER_PASSWORD),
admin: process.env.USER_ADMIN
}
}
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser(async (id, done) => {
fetchUser(id)
.then(user => done(null, user))
.catch(err => done(err))
}
)
which results in:
/Users/panoplos/Documents/Projects/Node.js/react-apollo-koa-example/koa/auth.js:59
passport.serializeUser(function (user, done) {
^
TypeError: passport.serializeUser is not a function
at Object.<anonymous> (/Users/panoplos/Documents/Projects/Node.js/react-apollo-koa-example/koa/auth.js:22:10)
at Module._compile (module.js:571:32)
at loader (/Users/panoplos/Documents/Projects/Node.js/react-apollo-koa-example/node_modules/babel-register/lib/node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (/Users/panoplos/Documents/Projects/Node.js/react-apollo-koa-example/node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/panoplos/Documents/Projects/Node.js/react-apollo-koa-example/koa/index.js:34:1)
When I change the import
to a const passport = require('koa-passport')
directive, it works without issue.
Version info:
{
...
"devDependencies": {
"babel-cli": "^6.22.2",
"babel-eslint": "^7.0.0",
"babel-preset-es2015": "^6.22.0",
"babel-preset-stage-2": "^6.22.0",
"flow-bin": "^0.42.0",
"flow-typed": "^2.0.0",
},
"dependencies": {
...
"koa": "^2.2.0",
"koa-bodyparser": "^3.2.0",
"koa-generic-session": "^1.11.5",
"koa-logger": "^2.0.1",
"koa-passport": "^3.0.0",
"koa-router": "^7.0.1",
"passport-facebook": "^2.1.1",
"passport-google-oauth2": "^0.1.6",
"passport-local": "^1.0.0",
"passport-twitter": "^1.0.4",
"persistgraphql": "^0.3.1",
},
...
}
Panoplos commented
Never mind... Just looked into the source and realised you are exporting passport
as default. My bad...