Не удается прочитать свойство '@global' из неопределенного - MUI-компоненты ссылки NPM - PullRequest
0 голосов
/ 17 октября 2018

Я создал несколько компонентов React, которые обертывают компоненты Material-UI и упакованы как модуль NPM.

Модуль отлично работает при установке через удаленный пакет: npm install *name-of-package* или через локальную установку.: npm install ../*name-of-package*.

Однако для разработки модулей я хотел бы использовать npm link, чтобы я мог использовать webpack --watch / webpack-dev-server и т. Д. В каталогах модулей и сайтов.

Для этого я запускаю npm link, чтобы создать символическую ссылку в каталоге модуля, а затем npm link *name-of-package* в каталоге сайта.Webpack запускается, как и ожидалось, однако я продолжаю сталкиваться с ошибками в браузере, относящимися к функции withStyles MUI:

Uncaught TypeError: Cannot read property '@global' of undefined, относящейся к строке var rules = style[propKey]; function handleNestedGlobalContainerRule(rule).

Идругие, такие как: The above error occurred in the <WithStyles(Typography)> component

Из того, что я могу сказать из аналогичных постов, это жалоба на отсутствие объекта theme (на сайте есть MuiThemeProvider с объявленным объектом темы).

Кто-нибудь может подсказать, почему это может работать с npm install, а не npm link?Я не могу понять это.

1 Ответ

0 голосов
/ 17 октября 2018

После проверки различных коммитов и прочтения справки @AstenMies я, похоже, решил эту проблему.Или, по крайней мере, я больше не в состоянии воспроизвести проблему.

Я не совсем уверен, какое именно изменение решило проблему, но я перечислю, что я сделал, если кто-то еще окажется в этой ситуации:

  • Как указывает ссылка @AstenMies, свойство в моем theme объекте не было определено (хотя это само по себе не решило мою проблему)
  • Убедитесь, что Reactи React-DOM версии вашего модуля и сайта одинаковы
  • Не смешивайте ваши команды yarn add и npm install - смешивание менеджеров пакетов может привести к несоответствиям
  • В случае сомнений,удалите папку node_modules и установите снова.Вы также можете npm cache clean здесь, чтобы избежать любых кешированных гадостей
...