Коротко по сути: в VK Bridge (VK Mini Apps storage) можно сохранять только строки. Если у вас переменная — число или объект — её надо превратить в строку (например, JSON.stringify). При загрузке — распарсить (JSON.parse). Также перед использованием стоит инициализировать bridge.
Ниже — минимальные примеры.
1) Просто поместить значение переменной в строку
- Для числа/строки:
const str = String(score); // или `${score}`
- Для объекта/сложной структуры:
const str = JSON.stringify({ score, level, items });
2) Сохранить в VK (VK Bridge)
- Инициализация (выполнять один раз при старте):
import bridge from '@vkontakte/vk-bridge';
bridge.send('VKWebAppInit');
- Сохранение (async/await):
async function saveToVK(key, data) {
try {
const value = JSON.stringify(data); // обязательно строка
await bridge.send('VKWebAppStorageSet', { key, value });
console.log('saved');
} catch (err) {
console.error('save error', err);
}
}
- Загрузка:
async function loadFromVK(key) {
try {
const res = await bridge.send('VKWebAppStorageGet', { keys: [key] });
// res.keys — массив { key: '...', value: '...' }
const item = res.keys.find(k => k.key === key);
return item ? JSON.parse(item.value) : null;
} catch (err) {
console.error('load error', err);
return null;
}
}
3) Важные моменты и отладка
- Значение должно быть строкой — использовать JSON.stringify/parse.
- Вызывайте bridge.send('VKWebAppInit') при старте, иначе некоторые методы могут не работать.
- Проверяйте ошибки в catch и в консоли (в дебаге мини-приложения).
- Обратите внимание на ограничения по размеру/количеству ключей — лучше хранить компактно.
- Если хотите быстрый локальный тест — используйте localStorage.setItem/getItem (API синхронный).
Если вы пришлёте ваш код (как вы формируете строку и как вызываете bridge), и какие ошибки/результаты в консоли, я помогу конкретно исправить.