我正在设置由另一个开发人员创建的MERN堆栈项目,但出现错误:
node_modules/passport-oauth2/lib/strategy.js:82
[0] if (!options.clientID) { throw new TypeError('OAuth2Strategy requires a clientID option'); }
[0] ^
[0]
[0] TypeError: OAuth2Strategy requires a clientID option
如果我理解正确,.env文件中应该有clientID,项目中没有这样的文件,对吗?
答案 0 :(得分:0)
对我来说,我做了类似的事情
passport.use(
new FacebookStrategy(
{
clientID: config.FACEBOOK_APP_ID,
clientSecret: config.FACEBOOK_CONSUMER_SECRET,
callbackURL: config.FACEBOOK_REDIRECT_URL,
profileFields: ['id', 'displayName', 'email']
},
但是我忘记将FACEBOOK_APP_ID
添加到我的配置文件中。只要确保您传递的clientId不为null或未定义
答案 1 :(得分:0)
问题是 config.FACEBOOK_CLIENT_ID ,而不是 config.FACEBOOK_APP_ID
错误策略:
passport.use(
new FacebookStrategy(
{
clientID: config.FACEBOOK_CLIENT_ID,
clientSecret: config.FACEBOOK_CONSUMER_SECRET,
callbackURL: config.FACEBOOK_REDIRECT_URL,
profileFields: ['id', 'displayName', 'email']
},
正确的策略:
passport.use(
new FacebookStrategy(
{
clientID: config.FACEBOOK_APP_ID,
clientSecret: config.FACEBOOK_CONSUMER_SECRET,
callbackURL: config.FACEBOOK_REDIRECT_URL,
profileFields: ['id', 'displayName', 'email']
},
答案 2 :(得分:0)
一定要 npm install dotenv,并添加 require('dotenv').config();到 app.js 文件的顶部。
虽然@ColsonRice 的回答并不是我收到上述错误 OAuth2Strategy requires a clientID option
的确切原因,但它确实为我指明了正确的方向。在尝试让我的 NodeJs express 服务器的 Typescript 版本在 Heroku 上工作时,我已经改变了(10 次提交),我的 package.json 启动脚本来自
"start": "node -r dotenv/config ./dist/index.js",
到
"start": "node dist/index.js",
更改开发启动以使用带有 dotenv/config 选项的替代启动命令解决了我的问题。我的 package.json 脚本部分的最后 4 行如下:
"dev": "nodemon --exec npm run restart",
"restart": "rimraf dist && npm run build && npm run devstart",
"devstart": "node -r dotenv/config ./dist/index.js",
"start": "node dist/index.js",
所以对我来说,Colson 的负分是不合理的,因为它间接帮助我解决了我的问题。
答案 3 :(得分:-1)
确保npm安装dotenv,并添加require('dotenv')。config();到您的app.js文件顶部。