【问题标题】:TypeError: JwtStrategy requires a secret or key类型错误:JwtStrategy 需要秘密或密钥
【发布时间】:2022-12-03 04:15:11
【问题描述】:

我已经阅读了数百万个具有相同问题的线程,但我无法解决它:(

这是我做的一个旧项目,我需要再次访问它,但是在运行 npm start 时出现以下错误:

> express-typescript-starter@0.1.0 start
> npm run tsc && npm run serve


> express-typescript-starter@0.1.0 tsc
> tsc


> express-typescript-starter@0.1.0 serve
> ts-node src/server.ts

{"level":"debug","message":"Logging initialized at debug level"}

C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\passport-jwt\lib\strategy.js:45
        throw new TypeError('JwtStrategy requires a secret or key');
              ^
TypeError: JwtStrategy requires a secret or key
    at new JwtStrategy (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\passport-jwt\lib\strategy.js:45:15)
    at Object.<anonymous> (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\src\config\passport.ts:6:28)
    at Module._compile (node:internal/modules/cjs/loader:1149:14)
    at Module.m._compile (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\ts-node\src\index.ts:858:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1203:10)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\ts-node\src\index.ts:861:12)
    at Module.load (node:internal/modules/cjs/loader:1027:32)
    at Function.Module._load (node:internal/modules/cjs/loader:868:12)
    at Module.require (node:internal/modules/cjs/loader:1051:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\src\app.ts:16:1)
    at Module._compile (node:internal/modules/cjs/loader:1149:14)
    at Module.m._compile (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\ts-node\src\index.ts:858:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1203:10)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\alan_\Desktop\cdng\mern-finance-server-master\node_modules\ts-node\src\index.ts:861:12)
    at Module.load (node:internal/modules/cjs/loader:1027:32)

这是 src/config/passport.ts:

import passport from 'passport'
import { Strategy as JwtStrategy, ExtractJwt } from 'passport-jwt'
import userServices from '../services/userServices'
import { JWT_SECRET } from '../util/secret'

export const jwtStrategy = new JwtStrategy(
  {
    secretOrKey: JWT_SECRET,
    jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  },
  async (payload: any, done: any) => {
    const userEmail = payload.email
    const foundUser = await userServices.findUserByEmail(userEmail)
    done(null, foundUser)
  }
)

我没有 .env 文件(我不需要,对吧?)

运行“npm i”时,我也遇到了一堆错误,但我可以 --force 它:

npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: jest-config@27.5.1
npm WARN Found: ts-node@8.10.2
npm WARN node_modules/ts-node
npm WARN   dev ts-node@"^8.6.2" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peerOptional ts-node@">=9.0.0" from jest-config@27.5.1
npm WARN node_modules/jest-config
npm WARN   jest-config@"^27.5.1" from @jest/core@27.5.1
npm WARN   node_modules/@jest/core
npm WARN   1 more (jest-cli)
npm WARN 
npm WARN Conflicting peer dependency: ts-node@10.9.1
npm WARN node_modules/ts-node
npm WARN   peerOptional ts-node@">=9.0.0" from jest-config@27.5.1
npm WARN   node_modules/jest-config
npm WARN     jest-config@"^27.5.1" from @jest/core@27.5.1
npm WARN     node_modules/@jest/core
npm WARN     1 more (jest-cli)
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: ts-jest@26.5.6
npm ERR! Found: jest@27.5.1
npm ERR! node_modules/jest
npm ERR!   dev jest@"^27.5.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer jest@">=26 <27" from ts-jest@26.5.6
npm ERR! node_modules/ts-jest
npm ERR!   dev ts-jest@"^26.5.1" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: jest@26.6.3
npm ERR! node_modules/jest
npm ERR!   peer jest@">=26 <27" from ts-jest@26.5.6
npm ERR!   node_modules/ts-jest
npm ERR!     dev ts-jest@"^26.5.1" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

你可以看到整个repo here

谢谢!

【问题讨论】:

    标签: mongodb express jwt stack mern


    【解决方案1】:

    您的import { JWT_SECRET } from '../util/secret' 不是正确的文件名。在你的仓库中它是https://github.com/AlanFPS/mern-finance-server/blob/master/src/util/seccret.ts。您的导入正在寻找 secret,但您的文件名为 seccret(两个 c)。

    您还需要在根目录中放置一个 .env 文件,并确保它具有一个 JWT_SECRET 秘密值。

    修改这些和/或也只是尝试使用 secretOrKey 的临时硬编码字符串,以便进一步调试此问题。

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 2018-01-13
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多