const getFolderData = async () => {
if (!('showDirectoryPicker' in window)) {
console.error('File System Access API не поддерживается');
return;
}
try {
const dirHandle = await window.showDirectoryPicker();
const contents = [];
for await (const entry of dirHandle.values()) {
if (entry.kind === 'file') {
contents.push(`Файл: ${entry.name}`);
} else if (entry.kind === 'directory') {
contents.push(`Папка: ${entry.name}`);
}
}
contents.forEach(item => console.log(item));
return dirHandle;
} catch (err) {
console.error('Непредвиденная ошибка:', err);
}
}
const writeSomeDocument = async (dirHandle) => {
try {
const newFileHandle = await dirHandle.getFileHandle("test.txt", {
create: true
});
const writable = await newFileHandle.createWritable();
await writable.write("Hello, world!");
await writable.close();
console.log('Файл создан');
} catch (err) {
console.error('Непредвиденная ошибка:', err);
}
}
const dirHandle = await getFolderData(); // Получаем сущность для работы с директорией и выводим её содержимое
writeSomeDocument(dirHandle); // Записываем тестовый файл в эту директорию
<SignInButton />
нет свойств afterSignInUrl
и afterSignUpUrl
, что подтверждает и документация компонента.afterSignXUrl
можно использовать signXFallbackRedirectUrl
, но предпочтительнее использовать переменные среды. muted
у видео. Многие браузеры не позволяют автоматически воспроизводить видео со звуком. touchSwipe
у вас есть в проекте.threshold
.const getPropByPath = (object, path) => {
const _path = Array.isArray(path) ?
path :
path.split('.');
if (object && _path.length) return getPropByPath(object[_path.shift()], _path);
return object;
};
const obj = {
a: {
b: 1,
c: {
d: 2
}
}
}
getPropByPath(obj, 'a.b'); // 1
getPropByPath(obj, 'a.c.d'); // 2
getPropByPath(obj, 'a.c'); // { d: 2 }
npm run build
, потом папку dist
из корня проекта скопировать куда-нибудь на VPS, настроить nginx (или другой) веб-сервер, чтобы он запросы по нужному вам URL перенаправлял на index.html
из той папки. JS API 3.0 работает только с ключами, у которых заполнено поле "Ограничение по HTTP Referer".
function timeAgo(input) {
const date = (input instanceof Date) ? input : new Date(input);
const formatter = new Intl.RelativeTimeFormat('ru');
const ranges = {
years: 3600 * 24 * 365,
months: 3600 * 24 * 30,
weeks: 3600 * 24 * 7,
days: 3600 * 24,
hours: 3600,
minutes: 60,
seconds: 1
};
const secondsElapsed = (date.getTime() - Date.now()) / 1000;
for (let key in ranges) {
if (ranges[key] < Math.abs(secondsElapsed)) {
const delta = secondsElapsed / ranges[key];
return formatter.format(Math.round(delta), key);
}
}
}
createApi.jsx
не видно импортов, но предположу, что дело в них:import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
/react
в конце импорта. window.dataLayer === undefined
(не существует). По информации из Яндекс Справки, при инициализации метрики нужно инициализировать window.dataLayer
:<script type="text/javascript">
// Инициализация кода счетчика
ym(XXXXXX, 'init', {
...
// Если настройка ecommerce включена при инициализации, то контейнером данных всегда будет window.dataLayer
// Если настройка включена через интерфейс, то название можно изменить в настройках счетчика
ecommerce: true
...
});
// Контейнер данных (JavaScript-массив) в глобальном пространстве имен (window)
window.dataLayer = window.dataLayer || [];
</script>