mscorlib: Ошибка: не удается найти модуль "crypto" после использования Webpack в приложении
У меня есть проект, который использует библиотеку openpgpjs в качестве зависимости, и я собираю все это приложение для развертывания в функциях Azure для решения проблем холодного запуска.
Функции Azure работают нормально при локальном запуске в формате, отличном от Webpacked, но как только я упаковываю файлы в Web, я получаю сообщение об ошибке во время выполнения:
"mscorlib: Ошибка: не удается найти модуль" crypto ""
Код, который вызывает эту ошибку, кажется, из утилиты Openpgpjs util.js.
Весь этот файл находится здесь: https://github.com/openpgpjs/openpgpjs/blob/master/src/util.js
Ниже приведен фрагмент кода:
/**
* Get native Node.js crypto api. The default configuration is to use
* the api when available. But it can also be deactivated with config.use_native
* @return {Object} The crypto module or 'undefined'
*/
getNodeCrypto: function() {
if (!this.detectNode() || !config.use_native) {
return;
}
return require('crypto');
},
Что касается жизни, я не могу понять, почему это происходит, и я не могу заставить ошибку исчезнуть.
Я использую свой собственный пакет-git для создания веб-пакетов и т. Д. Однако я получаю то же поведение, если использую пакет функций Azure. (Которого не было, когда я начал писать код для мастер-пакета.
В результате я думаю, что это как-то связано с тем, как библиотека играет с WebPack, но я не уверен, с чего начать, чтобы выяснить это / устранить неполадки.
У кого-нибудь есть идеи о том, что идет не так, или, по крайней мере, идеи, которые помогут мне еще больше изолировать проблему?
------------------- РЕДАКТИРОВАТЬ ---------------------
Я создал простой проект, который воспроизводит проблему при запуске через Funcpack, который использует Webpack.
Шаги воспроизведения:
Установите funcpack и azure-functions-cli глобально:
npm install -g funcpack azure-functions-cli
Клонировать следующий репо:
Запустите установку npm, находясь в клонированной папке:
установка npm
Запустите функцию Azure с помощью azure-functions-cli из базы клонированного репозитория.
func run aaaa
Перейдите по следующему URL-адресу и подтвердите, что вы получите пустую страницу, которая показывает его работу:
Остановите azure-functions-cli, закрыв окно.
Запустите funcpack в базе каталога:
funcpack
Повторите шаги 4-5
ПРИМЕЧАНИЕ. На этот раз вы получите сообщение об отсутствии криптографии модуля.