JSDom в Azure (собственные модули Node.js)
У меня возникают проблемы с получением приложения nodejs, которое использует JSDom для работы в Azure, так как оно зависит от встроенного модуля - Contextify, я понимаю, что Azure не обеспечивает компиляцию для встроенных модулей.
Однако согласно документации Azure
Поскольку облачные службы Windows Azure полагаются на папку node_modules, развертываемую как часть приложения, любой собственный модуль, включенный в состав установленных модулей, должен работать в облачной службе, если он был установлен и скомпилирован в системе разработки Windows.
Все это прекрасно работает на моем устройстве dev, так как оно скомпилировано во время установки npm. Я не понимаю, почему он не работает в Azure, поскольку я предоставляю скомпилированную версию? Если это работает на моем Windows Dev Box, компиляция явно успешна. Я развернул в Azure форму локального репозитория git, так что мне интересно, не скомпилированы ли файлы, когда я фиксирую?
1 ответ
ОБНОВЛЕНИЕ: последний выпуск Azure (в частности, бэкэнд мобильных сервисов) поддерживает произвольные модули NPM - см. Раздел "Мобильные сервисы: поддержка модулей NPM"
Из документов JSDom на npm:
К сожалению, для создания такого рода магии требуется C++. А в Node.js использование C++ из JavaScript означает использование "собственных модулей". Собственные модули компилируются во время установки, чтобы они работали именно для вашей машины; то есть вы не загружаете двоичный файл контекста из npm, а собираете его локально после загрузки исходного кода из npm.
https://npmjs.org/package/jsdom
Поскольку ваши "собственные модули" не имеют той же подписи, что и любая другая машина в "родном модуле" Azure, она не будет загружена.