Как вы сказали, если вы не используете window
в своем коде (способ исправить это проверить, определено ли оно с помощью typeof
), проблема возникает из-за одной из ваших сторонних зависимостей, которые используют window
как глобальный объект в собственном коде.
Вы должны найти, какой из них, и добавить загрузчик null
в конфигурацию вашего веб-пакета. В вашем gatsby-node.js
:
exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
if (stage === "build-html") {
actions.setWebpackConfig({
module: {
rules: [
{
test: /bad-module/,
use: loaders.null(),
},
],
},
})
}
}
В приведенном выше коде /bad-module/
- это зависимость в node_modules
, которую вы хотите избежать транспиляции. По сути, вы заменяете вызывающий ошибку модуль фиктивным модулем во время рендеринга сервера.