本地存储未定义

时间:2017-07-10 14:46:01

标签: javascript local-storage

我正在尝试在javascript中使用localstorage来在执行之间保存数据。以下是使用它的代码




  const commando = require('discord.js-commando');
 roasts = localStorage.getItem(“roasts” “)。split(/ \ r?\ n /);

类RoastMe扩展了commando.Command {
构造(客户端){
 super(客户端,{
名称:'addroast',
 group:'insult',
 memberName:'addroast',
说明:'添加烤肉到!roastme存档'
});
 }

 async run(message,args){
 if(args.length == 0)message.reply(“不是烤肉。”);
其他{
 roasts.push();
烤肉[roasts.length-1] = args;
 var save =“”;
 for(var i = 0; i< roasts.length; i ++){
 save + = roasts [i] +“\ n”;
 }

 localStorage.setItem(“roasts”,save);
 }
 }
}
 module.exports = RoastMe;
  




这是我试图运行时产生的错误它




  ReferenceError:localStorage未定义
 at Object。< anonymous>

 //错误位置&#xA ;(/ home / ubuntu / workspace / commands / insult / addinsult.js:2:1)

 at Module._compile(module.js:569:30)
 at Object.Module ._extensions..js(module.js:580:10)
在Module.load(module.js:503:32)
在tryModuleLoad(module.js:466:12)
在Function.Module._load(module.js:458:3)
在Module.require(module.js:513:17)
 at require(internal / module.js:11:18)& #xA; at /home/ubuntu/workspace/node_modules/require-all/index.js:52:46
at Array.forEach(native)
  

 


如果有更好的方法在执行之间存储数据,请告诉我。否则,你能解释为什么这不起作用吗? 
谢谢。





编辑:发布的代码来自addinsult.js




2 个答案:

答案 0 :(得分:1)

您在哪里定义本地存储?如果它是一个模块,你需要“需要”它。

这一行roasts = localStorage.getItem("roasts").split(/\r?\n/);

尝试使用一种名为“localStorage”的东西,这种东西从未被定义过。

如果我没有弄错的话,您似乎正在尝试使用此模块:https://www.npmjs.com/package/node-localstorage我发现了有关如何在该页面上使用它的说明。

if (typeof localStorage === "undefined" || localStorage === null) {
   var LocalStorage = require('node-localstorage').LocalStorage;
   localStorage = new LocalStorage('./scratch');
}

localStorage.setItem('myFirstKey', 'myFirstValue');
console.log(localStorage.getItem('myFirstKey'));

答案 1 :(得分:1)

您需要在某个地方声明它,例如在js文件的顶部,并指定它是全局的:

/* global localStorage, */

或者,或者使用绑定到窗口的版本(它是您的全局对象)

window.localStorage.setItem("roasts", save);