为什么在使用Next.js中间件时会出现此错误?

jxct1oxe  于 2022-10-01  发布在  其他
关注(0)|答案(1)|浏览(210)

问题所在

我正在使用Next.js、Prisma和NextAuth的电子邮件提供程序策略来设置身份验证系统。如果请求不包含有效会话,我想使用Next.js中间件重定向该请求。但是任何中间件的使用都会抛出这个错误,就像在midleware.js文件中声明函数一样:

error - (middleware)/node_modules/oidc-token-hash/lib/shake256.js (3:0) @ <unknown>
error - Cannot read properties of undefined (reading 'substr')
null

它会将此错误记录大约5次。这是位于{root}/middleware.jsmiddleware.js文件

import { NextResponse } from 'next/server';

export default function middleware(request) {
  return NextResponse.next();
}

下面是错误中指定的node_modules/oidc-token-hash/lib/shake256.js文件:

const crypto = require('crypto');

const [major, minor] = process.version.substr(1).split('.').map((x) => parseInt(x, 10));
const xofOutputLength = major > 12 || (major === 12 && minor >= 8);
const shake256 = xofOutputLength && crypto.getHashes().includes('shake256');

module.exports = shake256;

在创建这个文件之前,这个应用程序运行得很好。我可以通过电子邮件链接进行身份验证,向API路由发出简单的GET请求,并执行任何其他功能。我以前从未见过这样的错误。我最接近的猜测是,我遇到了某种依赖关系/版本控制问题,但我使用的是Next、Reaction、Prisma、NextAuth、Node等几乎最新的版本。

也许值得注意的是,我使用的是Reaction Query?除此之外,我不知道这可能是什么原因。

Package.json:

{
  "name": "nextjs-starter-auth-sql",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@next-auth/prisma-adapter": "^1.0.4",
    "@prisma/client": "^4.3.0",
    "bcrypt": "^5.0.1",
    "next": "12.2.5",
    "next-auth": "^4.10.3",
    "nodemailer": "^6.7.8",
    "prop-types": "^15.8.1",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-query": "^3.39.2"
  },
  "devDependencies": {
    "autoprefixer": "^10.4.8",
    "eslint": "^8.23.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-next": "12.2.5",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-jsx-a11y": "^6.6.1",
    "eslint-plugin-react": "^7.31.1",
    "eslint-plugin-react-hooks": "^4.6.0",
    "postcss": "^8.4.16",
    "prisma": "^4.3.0",
    "tailwindcss": "^3.1.8"
  }
}

我很乐意回答你的任何问题。非常感谢您的帮助。

d4so4syb

d4so4syb1#

我遇到了类似的问题,我尝试了几种方法,包括文档中的这一种

不过,我解决这个问题的唯一办法就是把Nextjs的版本降级到“12.1.0”。

删除node_MODULES文件夹和Package-lock.json,然后使用命令“NPM Install”重新安装依赖项,并在Package.json中使用版本“Next”:“12.1.0”,然后重试。

让我知道它是否起作用了。

相关问题