Я следую этому руководству по настройке auth0 в Gatsby. Я обнаружил, что если я клонирую их репозиторий на github и создаю его, оно строится без ошибок. Но по какой-то причине в моем коде, следуя их руководству и копируя / вставляя их код, я могу запускать его в разработке, но не создавать.
Их код содержит следующую строку:
const isBrowser = typeof window !== "undefined"
который должен быть проверкой для предотвращения следующей ошибки:
WebpackError: ReferenceError: window is not defined
И все же я все равно получаю эту ошибку. Я помещаю несколько операторов console.log выше и ниже строки кода, и сборка, похоже, ломается в этой строке.
Кроме того, если я изменю строку на
console.log("test0")
const isBrowser = false;
console.log("test1")
и затем я запускаю gatsby clean
, затем gatsby build
, код по-прежнему дает указанную выше ошибку, но без печати test0. Если я запускаю gatsby build
во второй раз, без очистки, он выдает «test0», а затем выдает указанную выше ошибку. Я не уверен, почему, если я убрал из него «окно», оно все равно выдает эту ошибку.
Я попытался изменить свою версию gatsby на более раннюю, но это тоже не сработало . Моя версия - 2.23.4, я пробовал 2.12.0, потому что это самая ранняя версия, совместимая с другим плагином, который я использую (gatsby-transformer-comment).
Я был бы очень признателен за любой совет, я не совсем уверен, что еще я должен попробовать здесь.
Я добавил следующее в конец gatsby-node.js
exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
if (stage === "build-html") {
/*
* During the build step, `auth0-js` will break because it relies on
* browser-specific APIs. Fortunately, we don’t need it during the build.
* Using Webpack’s null loader, we’re able to effectively ignore `auth0-js`
* during the build. (See `src/utils/auth.js` to see how we prevent this
* from breaking the app.)
*/
actions.setWebpackConfig({
module: {
rules: [
{
test: /auth0-js/,
use: loaders.null(),
},
],
},
})
}
}