Проблема с окном при попытке реализовать аутентификацию в Gatsby - PullRequest
0 голосов
/ 19 июня 2020

Я следую этому руководству по настройке 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(),
          },
        ],
      },
    })
  }
}
...