почему не разрешаются ссылочные модули? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть два электронных угловых приложения.Один из них - 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"

Спасибо, Мартин

1 Ответ

0 голосов
/ 14 мая 2019

После долгих исследований я обнаружил, что ответ заключается в следующем ... изменить node_modules @ angular-devkit \ build-angular \ src \ angular-cli-files \ models \ webpack-configs \ browser.js

в операторе возврата для

function getBrowserConfig(wco)

включить эту настройку ...

 target: "electron-renderer"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...