简体   繁体   English

TypeError 无法读取 null 的属性“1”

[英]TypeError Cannot read property '1' of null

'use strict'

const User = use('App/Model/User') const Env = use('Env')

const SteamWebAPI = require('steam-web'); const OpenID = require('openid'); const relyingParty = new OpenID.RelyingParty(   'http://' + Env.get('WEBSOCKET_HOST') + '/auth/callback', // Verification URL (yours)   'http://' + Env.get('WEBSOCKET_HOST'), // Realm (optional, specifies realm for OpenID authentication)   true, // Use stateless verification   false, // Strict mode   [] );


class AuthController {

  * LogOut(request, response) {
    yield request.auth.logout()
    response.redirect('/')   }

  * SteamRedirect(request, response) {
    relyingParty.authenticate('http://steamcommunity.com/openid', false, function(error, authUrl)   {
        if (error) {
            response.send('Authentication failed: ' + error.message)
        }
        else if (!authUrl) {
            response.send('Authentication failed')
        }
        else {
            response.redirect(authUrl)
        }       });   }

  * SteamCallback(request, response) {

    let verify = yield (
      new Promise(function(resolve, reject) {
        relyingParty.verifyAssertion(request.request, function(error, result) {
            if(!error && result.authenticated) return resolve(result.claimedIdentifier)
          else return reject(error)
        })
      })
    )

    let steamID = (/^http:\/\/steamcommunity\.com\/openid\/id\/(\d+)$/).exec(verify)[1]
    let steam = new SteamWebAPI({ apiKey: Env.get('STEAM_WEBAPI'), format: 'json' })

    let playerInfo = yield (
      new Promise(function(resolve, reject) {
        steam.getPlayerSummaries({
          steamids: [ steamID ],
          callback: function(err, result) {
            if(err) reject(err)
            else resolve(result.response.players[0])
          }
        })
      })
    )

    let searchUser = {
      steamid: playerInfo.steamid
    }

    let referral = yield request.session.get('referral', '')
    let newUser = {
      steamid: playerInfo.steamid,
      nickname: playerInfo.personaname,
      avatar: playerInfo.avatarfull,
      status: 0,
      referral: referral,
      tradelink: ''
    }

    let loggedUser = yield User.findOrCreate(searchUser, newUser)

    yield request.auth.loginViaId(loggedUser.id)
    response.redirect('/')

  }

}

module.exports = AuthController

截屏

can you help me?你能帮助我吗?

laravel TypeError Cannot read property '1' of null laravel TypeError 无法读取 null 的属性“1”

How can I solve this?我该如何解决这个问题?

TypeError Cannot read property '1' of null TypeError 无法读取 null 的属性“1”

Is because the exec(verify)[1] is supposed to return an array with at least two elements.是因为exec(verify)[1]应该返回一个至少包含两个元素的数组。 It then takes the value of the 2nd array element and assigns it to SteamID .然后它获取第二个数组元素的值并将其分配给SteamID

let steamID = (/^http://steamcommunity.com/openid/id/(\d+)$/).exec(verify)[1] 
let steam = new SteamWebAPI({ apiKey: Env.get('STEAM_WEBAPI'), format: 'json' })

The function is not returning at least 2 elements, so when it tries to read the 2nd element (in array index 1 ), it returns null .该函数没有返回至少 2 个元素,因此当它尝试读取第二个元素(在数组索引1 )时,它返回null

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM