TypeError:无法读取属性'拆分'为null
TypeError: Cannot read property 'split' of null
我尝试验证连接到Google API以便使用Google Analytics。这是我的代码:
'use strict'
const fs = require('fs')
const open = require('open')
const Fs = require('fs')
const Google = require('googleapis')
const Url = require('url')
const Http = require('http')
const CREDENTIALS_DIR = './.credentials/'
const SECRET_PATH = CREDENTIALS_DIR + 'google-analytics-secret.json'
const TOKEN_PATH = CREDENTIALS_DIR + 'google-analytics-accesstoken.json'
let auth = loadCredentials()
const oauth2Client = new Google.auth.OAuth2(
auth.CLIENT_ID,
auth.CLIENT_SECRET,
auth.REDIRECT_URL)
function loadCredentials () {
try {
let secret = Fs.readFileSync(SECRET_PATH)
console.log('Credentials successfully loaded from file.')
return {
CLIENT_ID: JSON.parse(secret).web.client_id,
CLIENT_SECRET: JSON.parse(secret).web.client_secret,
REDIRECT_URL: JSON.parse(secret).web.redirect_uris[0]
}
}
catch (err) {
if (err.code !== 'ENOENT') {
throw err
}
else {
console.log('Credentials successfully loaded from environment.')
return {
CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
REDIRECT_URL: 'http://localhost:1234/'
}
}
}
}
function getScopes () {
return [
'https://www.googleapis.com/auth/drive.readonly',
'https://www.googleapis.com/auth/analytics.readonly'
]
}
function getAuthCallbackServer () {
let url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: getScopes()
})
open(url, 'chrome')
let server = Http.createServer(handleAuthCallback)
server.listen(9999, () => {
console.log('Server listening on: http://localhost:1234')
})
}
// Parse Code sent by Google
function handleAuthCallback (req, res) {
let parse = Url.parse(req.url)
let code = parse.query.split('=').pop()
console.log(`Got code: ${code}`)
res.writeHead(200)
res.end('Awesome... Got the Code')
}
getAuthCallbackServer()
我试图使用函数使其模块化,但我得到了以下错误(在handleAuthCallback函数中):
TypeError: Cannot read property 'split' of null
这是我在handleAuthCallback函数中尝试打印parse
时得到的对象:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?code=x/xxxxxxxxxxxxxxxxxxxxxxxx',
query: 'code=x/xxxxxxxxxxxxxxxxxxxxxxxx',
pathname: '/',
path: '/?code=x/xxxxxxxxxxxxxxxxxxxxxxxx',
href: '/?code=x/xxxxxxxxxxxxxxxxxxxxxxxx' }
我真的不理解这个错误,因为在我重构代码之前它一直在工作。关于我哪里可能错了,有什么建议吗?
谢谢。
假设query
是对象,请尝试以下操作:
let parse = Url.parse(req.url);
let code = parse.query.code;
此function
被调用:
// Parse Code sent by Google
function handleAuthCallback (req, res) {
let parse = Url.parse(req.url)
let code = parse.query.split('=').pop()
console.log(`Got code: ${code}`)
res.writeHead(200)
res.end('Awesome... Got the Code')
}
当回调发生时,此处指定:
let server = Http.createServer(handleAuthCallback)
Url
定义如下:
const Url = require('url')
parse是CCD_ 5的结果。这没有查询属性,所以parse.query
是undefined
,因此parse.query.split
会产生错误,当您进行一些重构时,定义query
的代码可能会被删除。
相关文章:
- 数组在递归方法中设置为null
- 拆分单词jquery
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 来自文本输入null的html javascript变量
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- php代码在textbox更改事件上显示null
- 将字符串拆分为数组时出现JavaScript错误
- 在JavaScript中拆分日期字符串的更好方法是什么
- webpack代码拆分了handlerbs文件——结果是文件很大
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 如何将字符串拆分为字符,但在javascript中保留空格
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- 简单地将拆分变量添加到对象中
- Javascript-无法调用方法'拆分'为null
- TypeError:无法读取属性'拆分'为null
- 0x800a138f-JavaScript运行时错误:无法获取属性'拆分'的未定义引用或null引用
- 拆分导致null的JSON字符串