Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在节点中不保持奇偶校验的单例_Node.js - Fatal编程技术网

Node.js 在节点中不保持奇偶校验的单例

Node.js 在节点中不保持奇偶校验的单例,node.js,Node.js,发生了一个非常特别的问题: 启动节点应用程序时,我将访问令牌设置为模型的实例,如下所示: index.js const token = new Tokens(); token.setTokens(access_token, refresh_token); console.log(token.getTokens()) // WORKS 然后在不同的文件中调用实例中的getter函数 RunSchedular.js const tokens = Tokens.getInst

发生了一个非常特别的问题:

启动节点应用程序时,我将访问令牌设置为模型的实例,如下所示:

index.js

    const token = new Tokens();
    token.setTokens(access_token, refresh_token);
    console.log(token.getTokens()) // WORKS
然后在不同的文件中调用实例中的getter函数

RunSchedular.js

const tokens = Tokens.getInstance();
console.log('sched',tokens.getTokens()) //WORKS
API.js

export const POSTRequest = () => {
    const currentTokens = Tokens.getInstance();
    const refreshToken = currentTokens.getRefreshToken(); // DOES NOT WORK
    const body = {
        method: 'POST',
        headers: 
        {
            "Content-Type": "application/x-www-form-urlencoded",
            "Cache-Control": "no-cache"
        },
        body: qs.stringify({
            client_secret: clientSecret,
            client_id: clientId,
            refresh_token: refreshToken,
            grant_type: 'refresh_token',
            redirect_uri: redirectUri
        })
    };
    return body;
}
我的模型是这样的:

let instance = null;
export default class Tokens {
    constructor() {
        if(!instance) {
            instance = this;
        }
        this.accessToken = '';
        this.refreshToken = '';
    }

    getAccessToken() {
        return this.accessToken;
    }

    setAccessToken(value) {
        this.accessToken = value;
    }

    getRefreshToken() {
        return this.refreshToken;
    }

    setRefreshToken(value) {
        this.refreshToken = value;
    }

    getTokens() {
        return { 
            accessToken: this.accessToken, 
            refreshToken: this.refreshToken
            }
        }

    setTokens(accessToken,refreshToken) {
        this.accessToken = accessToken;
        this.refreshToken = refreshToken;
    }

    static getInstance() {
        console.log('instance', instance)
        if(!instance) {
            instance = new Tokens();
        }
        return instance;
    }
};
你知道为什么会这样吗?API.js中的实例不返回我的访问令牌(根据构造函数,访问令牌=“”),其中schedular.js和index.js返回我的访问令牌是否正确


我的模型不正确吗?

您如何导入
令牌模块?如果路径不同,将导入2个不同的模块

例如:

从'src/singleton/Tokens'导入{Tokens};
将是与以下对象不同的对象:

从“/../singleton/Tokens”导入{Tokens};


当您调用
Tokens.getInstance()时
POSTRequest
函数中,log
console.log('instance',instance)
打印您期望的或未定义的内容?@Molda它返回刚才注意到的'null'
const refreshttoken=currentTokens.getTokens()这是不对的。getTokens返回一个对象,因此它应该是
const refreshtToken=currentTokens.getRefreshtTokens()
Sorry was edited code。我把它换回来了。然而,这仍然是一个问题。这就好像它被完全重置了一样,因为当我在API.js中记录访问令牌和刷新令牌时,它们是空的(就像hte构造函数),实例为空。导入时区分大小写导致了问题-这是一个新手犯的错误。不用担心,我在几小时前就遇到了相同的问题。javascript中可怕的利基功能:(谢谢!是的,但是这个功能有很大的影响。