【问题标题】:Module not found: Error: Can't resolve 'crypto' in '/opt/lampp/htdocs/angular-testing-app/node_modules/jwa'未找到模块:错误:无法解析“/opt/lampp/htdocs/angular-testing-app/node_modules/jwa”中的“crypto”
【发布时间】:2018-09-27 05:53:31
【问题描述】:

我将在我的 angular6 项目npm i jsonwebtoken 中安装 jsonwebtoken 模块。 jsonwebtoken 模块 Dependencies jwa 已安装,但 index.js 文件 crypto 需要错误 Can't resolve 'crypto',但我已经安装了 crypto 模块。

请帮助解决问题。

我的错误:

ERROR in ./node_modules/jwa/index.js
Module not found: Error: Can't resolve 'crypto' in '/opt/lampp/htdocs/angular-testing-app/node_modules/jwa'
ERROR in ./node_modules/jws/lib/sign-stream.js
Module not found: Error: Can't resolve 'stream' in '/opt/lampp/htdocs/angular-testing-app/node_modules/jws/lib'
ERROR in ./node_modules/jws/lib/verify-stream.js
Module not found: Error: Can't resolve 'stream' in '/opt/lampp/htdocs/angular-testing-app/node_modules/jws/lib'
ERROR in ./node_modules/jws/lib/data-stream.js
Module not found: Error: Can't resolve 'stream' in '/opt/lampp/htdocs/angular-testing-app/node_modules/jws/lib'

【问题讨论】:

    标签: jwt angular6


    【解决方案1】:

    我遇到了和你一样的问题,我解决了。 您可以按照以下步骤操作:

    1. 将此文件添加到根目录

    patch.js

    const fs = require('fs');
    const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';
    
    fs.readFile(f, 'utf8', function (err,data) {
      if (err) {
        return console.log(err);
      }
      var result = data.replace(/node: false/g, 'node: {crypto: true, stream: true}');
    
      fs.writeFile(f, result, 'utf8', function (err) {
        if (err) return console.log(err);
      });
    });
    
    1. 将此命令添加到 package.json 文件中

    package.json

    {...
      "scripts": {
        "postinstall": "node patch.js",
        ...
      }
    }
    

    参考:https://gist.github.com/niespodd/1fa82da6f8c901d1c33d2fcbb762947d

    【讨论】:

      【解决方案2】:

      但我没有使用预安装,而是手动编辑了 `node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js' 并更改了行在那个正则表达式中:

      // old:
      node: false,
      // new:
      node: { crypto: true, stream: true },
      

      【讨论】:

      • 这节省了我的时间,非常hacky但现在可以使用。
      • 感谢您的认可
      • 这对我有用。谢谢。顺便说一句,我的问题出在 Vue.js 3 中。
      【解决方案3】:

      你可以用这个脚本修改 browser.js,应该修复它.....

       const fs = require('fs');
      const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';
      
      fs.readFile(f, 'utf8', function (err,data) {
        if (err) {
          return console.log(err);
        }
      
        //necesario para que jsforce y algunas bibliotecas que aun usan el global de nodejs
        let result = data.replace(/node: false/g,
          `node:
          {
           crypto: true,
           stream: true,
           fs: 'empty',
           global: true,
           tls: 'empty',
           net: 'empty',
           process: true,
           module: false,
           clearImmediate: false,
           setImmediate: false
      
           }`);
      
      
        fs.writeFile(f, result, 'utf8', function (err) {
          if (err) return console.error(err);
        });
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-13
        • 2021-01-30
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 2017-03-04
        • 1970-01-01
        • 2017-07-06
        相关资源
        最近更新 更多