Модуль не найден: ошибка: не удается разрешить крипто - PullRequest
0 голосов
/ 12 января 2019

Я получаю следующий список ошибок при запуске ng serve.

Мой пакет JSON выглядит следующим образом:

{   "name": "ProName",   "version": "0.0.0",   "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"   },   "private": true,   "dependencies": {
    "@angular-devkit/build-angular": "~0.12.0",
    "@angular/animations": "5.2.10",
    "@angular/common": "5.2.10",
    "@angular/compiler": "5.2.10",
    "@angular/compiler-cli": "5.2.10",
    "@angular/core": "5.2.10",
    "@angular/forms": "5.2.10",
    "@angular/platform-browser": "5.2.10",
    "@angular/platform-browser-dynamic": "5.2.10",
    "@angular/router": "5.2.10",
    "@types/dotenv": "^4.0.3",
    "@types/errorhandler": "0.0.32",
    "@types/express": "^4.16.0",
    "@types/node": "^10.5.1",
    "apostille-library": "^7.1.0",
    "core-js": "^2.5.4",
    "dotenv": "^6.0.0",
    "errorhandler": "^1.5.0",
    "express": "^4.16.0",
    "nem2-sdk": "^0.9.7",
    "rxjs": "~6.3.3",
    "stream": "0.0.2",
    "tslib": "^1.9.0",
    "typescript": "^2.9.2",
    "zone.js": "~0.8.26"   } }

Я получаю ошибку:

ОШИБКА в ./node_modules/aws-sign2/index.js Модуль не найден: Ошибка: Не удается разрешить "крипто" в '/ Users / MYPC / Documents / Myproj / ProName / node_modules / aws-sign2' ОШИБКА в ./node_modules/aws4/aws4.js Модуль не найден: Ошибка: не удается разрешить 'crypto' в '/ Users / MYPC / Documents / Myproj / ProName / node_modules / aws4' ОШИБКА в ./node_modules/ecc-jsbn/index.js Модуль не найден: Ошибка: Не удается разрешить "крипто" в '/ Users / MYPC / Documents / Myproj / ProName / node_modules / ecc-jsbn' ОШИБКА в ./node_modules/http-signature/lib/verify.js Модуль не найден: Ошибка: Не удается разрешить "крипто" в '/ Users / MYPC / Документы / MYPROJ / ProName / node_modules / HTTP-подпись / Библиотека' ОШИБКА в ./node_modules/http-signature/lib/signer.js Модуль не найден: Ошибка: не удается разрешить "крипто" в '/ Users / MYPC / Документы / MYPROJ / ProName / node_modules / HTTP-подпись / Библиотека' ОШИБКА в ./node_modules/nem-sdk/build/external/nacl-fast.js модуле нет Обнаружено: Ошибка: невозможно разрешить криптографию в '/ Users / MYPC / Документы / MYPROJ / ProName / node_modules / NEM-SDK / сборки / внешний' ОШИБКА в ./node_modules/nem-sdk/node_modules/aws-sign2/index.js

Ответы [ 3 ]

0 голосов
/ 13 января 2019

aws-sign2 - это пакет NodeJS (а crypto - это модуль NodeJS), но похоже, что вы имеете дело с веб-приложением. Имеет смысл, что модуль crypto недоступен в этой среде.

Можно ли выполнить то, что вам нужно сделать на стороне сервера? В противном случае вам может понадобиться поискать другой пакет.

0 голосов
/ 31 марта 2019

Мне нравится R. Ответ Ричардса , но я подумал, что было бы полезно предоставить дополнительную информацию.

Это известная проблема с Angular, и команда разработчиков Angular CLI, похоже, считает, что это скорее функция, чем ошибка. Я, как и другие разработчики в этой теме темы , не согласен. Участники этой ветки предоставили несколько исправлений, но мой проект не был успешно скомпилирован, пока я не реализовал решение R. Richards. Однако я не отменял предыдущие изменения, поэтому исправления tacnoman и GrandSchtroumpf могут быть полезны другим.

Некоторые, например clovis1122 здесь и другие в этой теме выпуска, задаются вопросом, почему веб-приложению необходим доступ к этим библиотекам и почему вместо этого не могут быть выполнены необходимые задачи на стороне сервера. Я не могу говорить за всех, но мой пример использования заключается в том, что при аутентификации учетной записи пользователя Strapi отвечает строкой JSON Web Token, которая должна быть декодирована клиентом. Поскольку необходимая библиотека зависит от crypto и stream, вы не сможете извлечь время истечения JWT, если эти зависимости не доступны.

В случае, если у кого-то возникнут проблемы с экстраполяцией из ответа Р. Ричардса, вам придется установить в false все зависимости, которые обнаруживаются в ошибках «не удается решить x». Например, критическая часть моего package.json:

    "browser": {
        "crypto": false,
        "stream": false
    }
0 голосов
/ 12 января 2019

Недавно я столкнулся с подобной проблемой, пытаясь использовать другую библиотеку ( tiff.js ) в небольшом проекте, над которым я экспериментировал.

Я нашел способ добавить следующее в мой файл package.json сразу после раздела devDependencies.

"devDependencies": {
    ...
},
"browser": {
    "crypto": false
}

Похоже, это не оказало какого-либо вредного воздействия при попытке использовать библиотеку в приложении.

...