【问题标题】:Error `can't resolve http ...' when running ng build --prod because of xmlrpc npm package?由于 xmlrpc npm 包,运行 ng build --prod 时出现错误“无法解析 http ...”?
【发布时间】:2019-10-31 14:32:03
【问题描述】:

我在 angular8 项目中使用xmlrpc npm 包。

问题是在尝试构建项目时,它在无法解析 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')

【问题讨论】:

    标签: angular npm xmlhttprequest xml-rpc angular8


    【解决方案1】:

    最新版本的 Angular CLI 不再支持许多 npm 包,现在它是内置的 Node 模块,因此您需要手动导入这些模块才能做到这一点,您应该更改 node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js

    找到

    node:false
    

    用你需要的包替换false

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

    我知道这是一种解决方法,而不是可重现的修复方法,但它确实有效

    您可以通过创建补丁文件并在 npm install 之后运行它来使其更具动态性 应该是这样的

    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);
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2019-11-29
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      相关资源
      最近更新 更多