Я пытался установить js-cookie (https://github.com/js-cookie/js-cookie), используя npm в моем проекте Laravel, но я продолжаю получать одно и то же ReferenceError: Cookies не определена ошибка. Она отлично работает с локальнымкопия js-cookie и через CDN, но я хотел бы выяснить, почему он не работает через npm.
Что я пробовал:
npm i js-cookie
npm i js-cookie --save
npm i js-cookie --save-dev
, за которым следует
npm run dev
Что я получаю в результате:
- js-cookie v 2.2.1 включается в мой package.json под зависимостями или devDependencies
- js-cookie появляется под node_mnodules
- ReferenceError: Cookies не определены при попытке использовать любые функции Cookies
Любая помощь будет принята с благодарностью!
Редактировать 1 - включая весь мой код
Мой master.blade.php выглядит следующим образом:
<!DOCTYPE html>
<html>
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>@yield('title')</title>
<link rel="stylesheet" type="text/css" href="{{ asset('css/app.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('css/nightmode-toggle.css') }}">
<script type="text/javascript" src="{{ asset('js/app.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/nightmode-toggle.js') }}"></script>
</head>
<body id="mybody">
@include('layouts.navbar')
<div class="content">
@yield('content')
</div>
</body>
</html>
Содержимое nightmode-toggle.css - это всего лишь несколько классов, которые явключать и выключать при установке флажка «Ночной режим»:
body.night {
background:black;
color:white;
}
.navbar.night {
background-color:black;
color:white;
}
etc...
Содержимое Nightmode-toggle.js:
$(document).ready(function () {
if (Cookies.get('nightmode-toggle') != 'on' && Cookies.get('nightmode-toggle') != 'off') {
Cookies.set('nightmode-toggle', 'off');
}
if (Cookies.get('nightmode-toggle') == 'off' && $('body').hasClass('night')) {
$('body').toggleClass('night');
$('.navbar').toggleClass('night');
etc...
} else if (Cookies.get('nightmode-toggle') == 'on' && !$('body').hasClass('night')) {
$('body').toggleClass('night');
$('.navbar').toggleClass('night');
etc...
}
$('#nightmode-toggle').click(function () {
if (Cookies.get('nightmode-toggle') == 'off') {
Cookies.set('nightmode-toggle', 'on');
$('body', ).toggleClass('night');
$('.navbar').toggleClass('night');
etc...
} else {
Cookies.set('nightmode-toggle', 'off');
$('body').toggleClass('night');
$('.navbar').toggleClass('night');
etc...
}
$.ajax({
type: "POST",
url: "/toggle",
success: function () {
},
error: function () {
alert('Could not switch to Night Mode for some reason! Please try again later.');
}
});
})
});
Как я уже говорил ранее, если я включу локальный файл js-cookie.js в заголовок, например,
<script type="text/javascript" src="{{ asset('js/js-cookie.js') }}"></script>
или если я включу CDN взаголовок, например,
<script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script>
все работает отлично, куки записываются правильно и классы меняются в зависимости от куки. Но я действительно хочу выяснить, как включить js-cookie, используя npm, как указано разработчиком.