Ошибка нативного узла 'Ошибка ссылки: окно не определено'
Мне было дано задание реализовать рендеринг на стороне сервера для реагирующего приложения. Я следовал этому руководству: https://scotch.io/tutorials/react-on-the-server-for-beginners-build-a-universal-react-and-node-app и впоследствии следовал точному шаги по фактическому применению. Все хорошо работало с реализацией рендеринга на стороне клиента, но как только я продолжил на стороне сервера, я получил следующую ошибку: "Ссылочная ошибка: окно не определено"
Проблема заключается в том, что приложение использует scrollmagic, библиотеку, доступную только на стороне клиента (примечание: я добавил условные выражения 'require' к любым ссылкам scrollmagic в самом коде, но я не могу найти способ обойти модуль).
Я думал о добавлении библиотеки scrollmagic на стороне клиента, но как только я ее удаляю, я получаю сообщение об ошибке из операторов 'require'.
Я прошу прощения, если это что-то очевидно, но я новичок в JavaScript и искал пару дней и ничего не нашел до сих пор. Если я могу предоставить дополнительную информацию, пожалуйста, дайте мне знать! Кроме того, если у вас есть какие-либо предложения относительно того, как я должен справиться с этим, я весь слух!
С наилучшими пожеланиями,
Эндрю
2 ответа
Объект window является свойством браузера / клиента, поэтому у вас не будет доступа к нему при выполнении javascript на сервере. Библиотека, такая как: https://www.npmjs.com/package/window-or-global может помочь, а также добавить условную логику для проверки объекта окна перед выполнением кода, который зависит от него.
В дополнение к предложению @sconway вручную проверять наличие окна при вызове этих методов на стороне клиента, другой метод, который я использовал в прошлом, - поместить этот код в componentDidUpdate
метод жизненного цикла.
Этот метод гарантированно не будет вызываться на сервере, только на клиенте.