簡體   English   中英

index.js' 不提供名為 'default' 的導出

[英]index.js' does not provide an export named 'default'

我是 MERN 開發的新手。 我正在嘗試按照舊教程構建學習管理系統。 但我最終得到了這個錯誤:

> C:\Users\MRPla\Downloads\CourseGuccho\edemy\server\middlewares\index.js:1
> import {expressJwt}  from "express-jwt"; SyntaxError: The requested
> module
> 'file:///C:/Users/MRPla/Downloads/CourseGuccho/edemy/server/node_modules/express-jwt/dist/index.js'
> does not provide an export named 'expressJwt'
>     at Object.<anonymous> (C:\Users\MRPla\Downloads\CourseGuccho\edemy\server\middlewares\index.js:1)
>     at Generator.next (<anonymous>)
>     at Object.<anonymous> (C:\Users\MRPla\Downloads\CourseGuccho\edemy\server\routes\auth.js:1)
>     at Generator.next (<anonymous>)
>     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10) [nodemon] app crashed -
> waiting for file changes before starting...

相關代碼如下:

服務器>中間件>index.js:

import expressJwt from "express-jwt";

export const requireSignin = expressJwt({
  getToken: (req, res) => req.cookies.token,
  secret: process.env.JWT_SECRET,
  algorithms: ["HS256"],
});

服務器>路由>auth.js:

import express from "express";

const router = express.Router();

// middleware
import { requireSignin } from "../middlewares";

// controllers
import { register, login, logout, currentUser } from "../controllers/auth";

router.post("/register", register);
router.post("/login", login);
router.get("/logout", logout);
router.get("/current-user", requireSignin, currentUser);

module.exports = router;

我也將這種格式用於中間件:

1.

import {expressJwt}  from "express-jwt";

export const requireSignin = expressJwt({
  getToken: (req, res) => req.cookies.token,
  secret: process.env.JWT_SECRET,
  algorithms: ["HS256"],
});
import {expressJwt}  from "express-jwt";

const requireSignin = expressJwt({
  getToken: (req, res) => req.cookies.token,
  secret: process.env.JWT_SECRET,
  algorithms: ["HS256"],
});

export default requireSignin;

但這根本沒有幫助。

這是 package.JSON 文件(用於服務器):

{
  "name": "server",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "nodemon -r esm server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.1.0",
    "cookie-parser": "^1.4.6",
    "cors": "^2.8.5",
    "csurf": "^1.11.0",
    "dotenv": "^8.6.0",
    "esm": "^3.2.25",
    "express": "^4.18.2",
    "express-jwt": "^7.7.7",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.13.15",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.20"
  },
  "description": ""
}

這種情況下正確的導入方式是:

import {expressjwt} from "express-jwt";

(小寫j

當您遇到類似錯誤時通常要嘗試的另一件事

請求的模塊 [...] 不提供名為“默認”的導出

正在使用star-import

import * as X from "x";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM