Express项目报错:Cannot read properties of undefined (reading 'use') 求助
错误原因及解决方法
错误原因
你代码里的这两行存在语法错误:
app.use(express.json()). app.use(helmet());
第一行末尾多了一个多余的句点,且下一行错误地重复使用app.use。JavaScript会将其解析为(app.use(express.json())).app.use(helmet())——app.use()返回的是app对象,但该对象并没有app属性,因此(app.use(express.json())).app的值为undefined,调用undefined.use()就会触发Cannot read properties of undefined (reading 'use')错误。
解决方法
有两种修复方式,任选其一即可:
方式1:移除多余句点,保持独立调用
将代码修改为:
app.use(express.json()); app.use(helmet());
方式2:正确使用链式调用
如果想保留链式写法,将下一行的app.use改为.use:
app.use(express.json()) .use(helmet());
修复后的完整代码示例:
import express from "express"; import bodyParser from "body-parser"; import mongoose from "mongoose"; import cors from "cors"; import dotenv from "dotenv"; import multer from "multer"; import helmet from "helmet"; import morgan from "morgan"; import path from "path"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); dotenv.config(); const app = express(); app.use(express.json()); app.use(helmet()); app.use(helmet.crossOriginResourcePolicy({policy:"cross-origin"})); app.use(morgan("common")); app.use(bodyParser.json({limit: "30mb", extended : true})); app.use(bodyParser.urlencoded({limit:"30mb", extended:true})); app.use(cors()) //Cross Orign Resource Policies. app.use("/assets", express.static(path.join(__dirname, 'public/assets')));
内容的提问来源于stack exchange,提问作者Bharadwaj Srikaa
相关产品推荐
相关产品推荐

