した。
エラーになるコード
1 2 3 4 5 6 | const { JSDOM } = require( 'jsdom' ); const sinon = require( 'sinon' ); const dom = new JSDOM(); dom.window.localStorage.setItem( 'foo' , 'bar' ); // SecurityError: localStorage is not available for opaque origins |
解決
new JSDOM()
のところで、 url
を適当に設定してやれば解決します。
1 |
原因
件の url
の初期値が about:blank
で、URLがそれだと localStorage
が駄目なので。
試しにブラウザーで about:blank を開いてコンソールから localStorage
を触ろうとしても同じようなエラーが出ます。
MDNに説明があります。
例外
SecurityError
- リクエストがポリシーの決定に反している、またはオリジンが妥当な scheme/host/port tupleでない (これは例えば、オリジンが
file:
やdata:
スキームを使うときに起こります)。例えば、ユーザーがブラウザー設定で特定オリジンへのデータ永続化のパーミッションを拒否していることもあります。