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, она не будет загружена.

Другие вопросы по тегам