Ошибка `не удается разрешить http ... 'при запуске ng build --prod из-за пакета xmlrpc npm? - PullRequest
0 голосов
/ 31 октября 2019

Я использую пакет xmlrpc npm в проекте angular8.

Проблема заключается в том, что при попытке построить проект выдает ошибку при не разрешении http или https:

Module not found: Error: Can't resolve 'https' in ...
Module not found: Error: Can't resolve 'http'

После исследования эти строки создают проблему, поскольку у angular есть свои HTTPClientModule. Есть идеи, пожалуйста?

var http  = require('http')
  , https = require('https')
  , url   = require('url')

1 Ответ

0 голосов
/ 14 ноября 2019

Многие npm-пакеты больше не поддерживаются в последних версиях углового CLI, теперь это встроенные модули Node, поэтому вам нужно импортировать эти модули вручную, чтобы изменить их в node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js

find

node:false

замените false такими необходимыми пакетами, как этот

node:{http:true,https:true,url:true} 

Я знаю, что это обходной путь, а не воспроизводимое исправление, но он работает

, вы можетесделайте его более динамичным, создав файл патча и запустив его после установки npm. Это должно быть примерно так:

node buildPatch.js

buildPatch.js

const fs = require('fs');
const path = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';

fs.readFile(path, 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  var result = data.replace(/node: false/g, 'node: {http:true,https:true,url:true}');

  fs.writeFile(path, result, 'utf8', function (err) {
    if (err) return console.log(err);
  });
});
...