Node.js 在节点中不保持奇偶校验的单例
发生了一个非常特别的问题: 启动节点应用程序时,我将访问令牌设置为模型的实例,如下所示: index.jsNode.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
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
函数中,logconsole.log('instance',instance)
打印您期望的或未定义的内容?@Molda它返回刚才注意到的'null'const refreshttoken=currentTokens.getTokens()代码>这是不对的。getTokens返回一个对象,因此它应该是const refreshtToken=currentTokens.getRefreshtTokens()
Sorry was edited code。我把它换回来了。然而,这仍然是一个问题。这就好像它被完全重置了一样,因为当我在API.js中记录访问令牌和刷新令牌时,它们是空的(就像hte构造函数),实例为空。导入时区分大小写导致了问题-这是一个新手犯的错误。不用担心,我在几小时前就遇到了相同的问题。javascript中可怕的利基功能:(谢谢!是的,但是这个功能有很大的影响。