我有一个 Angular 应用程序,必须使用 npm 包 @inrupt/solid-client-authn-browser
。
这个包依赖于 jwa
、crypto
、stream
和 buffer
包,所有这些包最初都是为 node.js(服务器端)创建的,不是为了在浏览器中运行。
创建者建议为浏览器替代品 (https://github.com/inrupt/solid-client-js/issues/608) 填充这些内容,他们使用 webpack 进行。
我发现可以通过将它添加到 buffer
来修复 polyfills.ts
(window as any).global = window;
global.Buffer = global.Buffer || require('buffer').Buffer;
但我还没有弄清楚如何修复 jwa 对加密的包依赖。 在包 (node_modules)/jwa/index.js 中,有
var crypto = require('crypto');
这在角度构建上失败(标准 ng build
):
Error: ./node_modules/jwa/index.js
Module not found: Error: Can't resolve 'crypto' in 'C:\dev\Windows\src\k diplomce\inbox\node_modules\jwa'
有 crypto-browserify
包。 我需要的只是告诉 npm 使用 crypto-browserify
而不是 crypto
。
有没有办法做到这一点(为了保持构建,我不想直接编辑 node_modules 中生成的文件)?
我的版本:Angular CLI:11.0.7,Angular:11.0.9