localStorage z webpack - problem

0

Cześć

Gdy dodaje taką funkcje do pliku index.js mojej aplikacji:

function settState() {
  state.chapter = localStorage.getItem("chapter");
  state.paragraph = localStorage.getItem("paragraph");
  state.knownWords = localStorage.getItem("knownWords");
}
settState();

zdarzenia które wcześniej działały bez zarzutu teraz wyrzucają błąd.
Pomimo że nie są zupełnie związane z tą funkcją.
Poza webpackiem ta funkcja działa normalnie.

Czy wiecie w czym tkwi problem ?

2

Sett* przez dwa "t" lepiej settuje? :D Ale wracając do tematu...

Co to za błąd i jakie funkcje?
Jak podmienisz tą funkcję na coś takiego, to błąd nadal występuje?

function settState() {
  state.chapter = 'test';
  state.paragraph = 'test';
  state.knownWords = 'test';
}
settState();

* fun fact - sett to po ang. bruk

3

https://github.com/standard/standard#i-use-a-library-that-pollutes-the-global-namespace-how-do-i-prevent-variable-is-not-defined-errors

W pliku package.json spróbuj dodać:

{
  "standard": {
    "globals": {
        "localStorage": true
     }
  }
}

Błąd wynika z tego, że podczas budowania jak jest uruchomiony proces Node to webpack nie ma dostępu do localStorage - bo to API przeglądarki, więc musisz mu powiedzieć, żeby się o to nie martwił.

0

Chyba nie zrobiłem należnego research'u bo jak wpisałem po prostu w konsoli:

localStorage.setItem('knownWords', ['dimorphism', 'pumpkin pie']);
a potem:
localStorage.getItem('knownWords')

To dostaje sprasowanego stringa zamiast tablicy!
Czy w local Storage można trzymać tylko stringi ???

2

Tak. LocalStorage przyjmuje stringi. Aby łatwiej Ci się pracowało z LocalStorage mozesz zrobić sobie helpery:

function save(key, value) {
	localStorage.setItem(key, JSON.stringify(value));
}

function load(key) {
	return JSON.parse(localStorage.getItem(key));
}

save('test', ['val1', 'val2']);
load('test');
0

Zrobione. Działa jak należy. Ogromne dzięki wszystkim za pomoc. :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1