我想使用 jwt.sign(payload, secretOrPrivateKey, [options, callback]) jsonwebtoken npm 的方法,但我不断收到错误
Uncaught ReferenceError: global is not defined
at Object../node_modules/buffer/index.js (index.js:43)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/safe-buffer/index.js (index.js:2)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/jws/lib/sign-stream.js (sign-stream.js:2)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/jws/index.js (index.js:2)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/jsonwebtoken/decode.js (decode.js:1)
at __webpack_require__ (bootstrap:78)
我阅读了很多关于这个问题的内容,添加了这个:
polyfills.ts
(window as any).global = window;
抛出新错误
psSupported.js:3 Uncaught ReferenceError: process is not defined
at Object../node_modules/jsonwebtoken/lib/psSupported.js (psSupported.js:3)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/jsonwebtoken/verify.js (verify.js:6)
at __webpack_require__ (bootstrap:78)
at Object../node_modules/jsonwebtoken/index.js (index.js:3)
at __webpack_require__ (bootstrap:78)
at Module../src/app/app.component.ts (main.js:95)
at __webpack_require__ (bootstrap:78)
at Module../src/app/app.module.ts (app.component.ts:11)
at __webpack_require__ (bootstrap:78)
(我看到了几个示例,例如 express-jsonwebtoken,但它们是纯 js,我没有太多将完整的 js 库添加到 Angular 项目的经验。)
有什么办法可以解决这个问题,或者在 Angular 8.0 下使用另一个库中的 jsonwebtoken 之类的 sign 方法有什么替代方法吗?
答案 0 :(得分:0)
最后我可以在 Angular 8 中使用 jsonwebtoken。
这是我所做的,我不确定他们做了什么,但我想帮助其他人让他们更接近他们,如果他们不断出现错误。
此列表的灵感来自控制台上关于 流、加密、全局、缓冲区、进程等
安装
crypto-js
stream
在默认的 js 文件中写入一些额外的行:
browser.js
node: { crypto: true, stream: true },
polyfills.js
import { global } from '@angular/compiler/src/util';
(window as any).global = window;
global.Buffer = global.Buffer || require('buffer').Buffer;
(window as any).process = {
env: { DEBUG: undefined },
};
配置:
tsconfig.app.json
"paths": {
"stream": ["../node_modules/stream-browserify/index.js"],
"crypto": ["../node_modules/crypto-js"]
}
tsconfig.json
"paths": {
"stream": ["../node_modules/stream-browserify/index.js"],
"crypto": ["../node_modules/crypto-js"
]
}
总而言之,它现在可以工作了。
萨巴