У меня есть два электронных угловых приложения.Один из них - angular-electronic-master от GitHub, другой - унаследованное приложение, основанное на material-dashboard-angular2-master.Оба проекта представляют собой angular 7, размещенные в электронном формате.
Я экспериментировал с angular-electronic-master и добавил к нему @ openid / appauth.Строит нормально.Когда я беру свои изменения и добавляю их в устаревшее приложение, оно не создается.Я получаю следующие ошибки:
ОШИБКА в ./node_modules/@openid/appauth/node_modules/opener/lib/opener.js Модуль не найден: Ошибка: невозможно разрешить 'child_process' в 'Z: \ TheApp \ angular-электронный \ node_modules @ openid \ appauth \ node_modules \ opener \ lib 'ОШИБКА в ./node_modules/@openid/appauth/built/node_support/crypto_utils.js Модуль не найден: ошибка: не удается разрешить крипто'in' Z: \ TheApp \ angular-электронный \ node_modules @ openid \ appauth \ built \ node_support 'ОШИБКА в ./node_modules/@openid/appauth/built/node_support/node_request_handler.js Модуль не найден: ошибка: не удается разрешить'http' в 'Z: \ TheApp \ angular-Electron \ node_modules @ openid \ appauth \ built \ node_support' ОШИБКА в ./node_modules/@openid/appauth/node_modules/follow-redirects/index.js Модуль не найден: Ошибка:Не удается разрешить 'http' в 'Z: \ TheApp \ angular-Electron \ node_modules @ openid \ appauth \ node_modules \ follow-redirects' ОШИБКА в ./node_modules/@openid/appauth/node_modules/follow-redirects/index.jsМодуль не найден: ошибка: не удается разрешить https 'in' TheApp \ angular-Electron \ node_modules @ openid \ appauth \ node_modules \ follow-redirects 'ОШИБКА в ./node_modules/@openid/appauth/node_modules/opener/lib/opener.js Модуль не найден: ошибка: может't '' os 'в' Z: \ TheApp \ angular-Electron \ node_modules @ openid \ appauth \ node_modules \ opener \ lib 'ОШИБКА в ./src/app/services/auth.service.ts Модуль не найден: Ошибка: может'os' в 'Z: \ TheApp \ angular-Electron \ src \ app \ services' ОШИБКА в ./node_modules/@openid/appauth/node_modules/follow-redirects/index.js модуль не найден: Ошибка: может'transize' stream 'в' Z: \ TheApp \ angular-Electron \ node_modules @ openid \ appauth \ node_modules \ follow-redirects '
Я могу разрешить зависимость os с помощью npm install os Я могуразрешите другие зависимости, выполнив редактирование node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js, как предложено в Angular 6 много Не удается устранить ошибки (crypto, fs, http, https, net, path, stream, tls, zlib)
Я чувствую себя неловко с исправлениями, потому что у проекта angular-electronic-master их нет и он успешно собирается.Также я не уверен, подходит ли browser.js, учитывая, что я упаковываю его как автономное электронное приложение.
Даже если я включу эти исправления, у меня все равно останется 'child_process'.
В поисках отсутствующих модулей оба проекта включают в себя node_modules @ types \ node \ index.d.ts, который содержит объявления для
declare module "http" {…}
declare module "https" {…}
declare module "stream" {…}
declare module "crypto" {…}
declare module "os" {…}
declare module "child_process" {…}
Я не знаю, почему это не помогает при разрешении httpmodule
Я довольно новичок в тонкостях разрешения модуля узла.Кажется, что существует очень много параметров, которые могут оказать влияние.
Есть ли какой-нибудь способ узнать, где и почему выполняется поиск модуля?немного похоже на fusionlog для разрешения сборки .net.Похоже, у tsc есть опция --traceResolution, которая может быть полезна.Мне просто нужно найти эквивалентную настройку tsconfig.json.Добавление
"traceResolution": true,
в раздел compilerOptions файла tsconfig.json дает массу выходных данных.Я передал это в файл журнала.При поиске в этом файле (76 000 строк) я вижу такие записи:
Модуль 'http' был преобразован в локально объявленный окружающий модуль в файле 'Z: / Application / MDBApp / angular-electronic / node_modules / @.types / node / index.d.ts '.
Не так полезно, как я надеялся.За исключением того, что на одном уровне он сообщает, что модуль разрешается .
Теперь я установил angular-cli глобально.
, если я запускаю
ng build --verbose
Я получаю полезную информацию, которую я посмотрю завтра ....
Завтра: Подробная информация содержит информацию о различных файлах, которые рассматриваются для разрешения.сообщение
Поле 'browser' не содержит допустимой конфигурации псевдонима
Продолжает появляться.
Так что теперь я смотрю на это... и эта ссылка.
Поле 'browser' не содержит допустимой конфигурации псевдонима
С проектом, который создает (angular-electronic-master) многословныйвыходные данные включают в себя
[child_process] внешний "child_process" 42 байта {main} [встроенный] cjs требует child_process [./node_modules/opener/lib/opener.js] 2: 19-43 [crypto]внешний "crypto" 42 байта {main} [встроенный] cjs требует crypto [./node_modules/@openid/appauth/built/node_support/crypto_utils.js] 16: 13-30
я могу 'Подобные строки не могут быть найдены в выходных данных неудачного проекта.
Итак, я несколько упростил неудачный проект - не полностью.И прочитай еще немного.В настоящее время я считаю, что проблема заключается в разрешении веб-пакета, поэтому собираюсь взглянуть на это дальше ...
Я понимаю, что это не самый ясный сценарий.Надеюсь, мои мыслительные процессы помогут некоторым людям.
Разочарованный, кто-то проголосовал за этот вопрос.Я думаю, что немного больше терпимости было бы хорошо.Все легко, когда знаешь как.; -)
Я попытался установить nodejs lte (версия 10.15.3) с помощью nvm. Я попытался удалить каталог node_modules и файл package-lock.json и повторно запустить npm install
Некоторые зависимости разработчиков включают
"@angular-devkit/build-angular": "^0.13.8",
"@angular/cli": "7.3.3",
"@angular/compiler-cli": "7.2.15",
"typescript": "3.2.4"
Спасибо, Мартин