Node.js 无法读取属性';代码';未定义的,解码Firebase ID令牌失败

Node.js 无法读取属性';代码';未定义的,解码Firebase ID令牌失败,node.js,firebase,react-native,firebase-authentication,react-native-firebase,Node.js,Firebase,React Native,Firebase Authentication,React Native Firebase,我在大约5%的请求中间歇性地遇到这个错误,我不知道为什么。它似乎在大多数情况下都有效,但我想让它达到100% {"name":"myapp","hostname":"worker-844ddfbc9f-ntlmz","pid":18,"level":50, "err":"[Throws: Cannot read property 'code' of undefined]", "msg":"Context creation failed: Decoding Firebase ID token fa

我在大约5%的请求中间歇性地遇到这个错误,我不知道为什么。它似乎在大多数情况下都有效,但我想让它达到100%

{"name":"myapp","hostname":"worker-844ddfbc9f-ntlmz","pid":18,"level":50,
"err":"[Throws: Cannot read property 'code' of undefined]",
"msg":"Context creation failed: Decoding Firebase ID token failed. Make sure you passed the entire string JWT which represents an ID token. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.",
"time":"2020-02-12T02:16:33.538Z","v":0}
TypeError: Cannot read property 'code' of undefined
    at FirebaseAuthError.get [as code] (/app/node_modules/firebase-admin/lib/utils/error.js:51:35)
    at FirebaseAuthError.FirebaseError.toJSON (/app/node_modules/firebase-admin/lib/utils/error.js:67:24)
    at JSON.stringify (<anonymous>)
    at prettyJSONStringify (/app/node_modules/apollo-server-core/dist/runHttpQuery.js:257:17)
    at throwHttpGraphQLError (/app/node_modules/apollo-server-core/dist/runHttpQuery.js:26:42)
    at Object.<anonymous> (/app/node_modules/apollo-server-core/dist/runHttpQuery.js:66:28)
    at Generator.next (<anonymous>)
    at fulfilled (/app/node_modules/apollo-server-core/dist/runHttpQuery.js:4:58)
    at process._tickCallback (internal/process/next_tick.js:68:7)
服务器

            let token = req.headers.authorization;

            if (!token || !token.length) {
                console.log('no token');
            }

            token = token.split('Bearer ')[1];

            // validate JWT and pluck user id
            const { uid } = await firebase.auth().verifyIdToken(token);

            // find the user based on id
            const user = await firebase.auth().getUser(uid);

如果
firebase.auth().currentUser
为false,则客户端代码将导致授权头
Bearer undefined
。此授权标头不会导致
在服务器代码中记录任何令牌(其长度为16)。运行
firebase.auth().verifyIdToken('undefined')
时,服务器代码将失败

如果
firebase.auth().currentUser
为false,则需要阻止客户端发送请求,或者捕获服务器代码中未定义的令牌

注意:在模板字符串中使用未定义变量会导致字符串“未定义”(不是空字符串)

            let token = req.headers.authorization;

            if (!token || !token.length) {
                console.log('no token');
            }

            token = token.split('Bearer ')[1];

            // validate JWT and pluck user id
            const { uid } = await firebase.auth().verifyIdToken(token);

            // find the user based on id
            const user = await firebase.auth().getUser(uid);