no-undef
- ошибка linter, а не ошибка времени выполнения. Таким образом, это не означает, что Snipcart недоступен при запуске кода.
Если это не было доступно, вы получите эту ошибку в консоли вашего браузера : ReferenceError: Snipcart is not defined
.
Если вы используете eslint
, вы можете добавить глобальную переменную , например, в вашей конфигурации eslint:
{
"globals": {
"Snipcart": false
}
}
В качестве альтернативы, вы можете добавить комментарий в файл, где вы используете API Snipcart: /* global Snipcart:false */
Объект Snipcart
будет доступен только в браузере, поэтому не следует вызывать эти функции, пока Гэтсби выполняет предварительный рендеринг вашего сайта. Это означает, что вам следует вызывать только Snipcart.api.*
функций с учетом API браузера Гэтсби , а не API-интерфейсы SSR или Node.
Кроме того, чтобы убедиться, что вы вызываете API Snipcart только после полной загрузки скрипта, вы можете проверить событие snipcart.ready
:
document.addEventListener('snipcart.ready', function() {
// any Snipcart.api.* call
});