node.js - nodejs + express: Cors ไม่ใช่ฟังก์ชัน
มันทำงานได้ดีจนถึงเช้าวันนี้ และตอนนี้ จู่ๆ ผมก็ได้รับข้อผิดพลาดประเภทบอกว่า Cors ไม่ใช่ฟังก์ชัน
โค้ดของฉัน
import * as Cors from "cors";
...
const corsOptions: Cors.CorsOptions = {
allowedHeaders: ["Origin", "X-Requested-With", "Content-Type", "Accept", "X-Access-Token", "Authorization"],
credentials: true,
methods: "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE",
origin: "*",
preflightContinue: true
};
createConnection(ormConfig).then(async connection => {
// run pending migrations
await connection.runMigrations();
// create express server
const app = express();
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true}));
// register cors
app.use(Cors(corsOptions)); //<---error occurs here
// register all controllers
useExpressServer(app, {
routePrefix: "/api",
controllers: [
__dirname + "/controllers/**/*{.js,.ts}"
],
authorizationChecker: async (action: any, roles: string[]) => {
return JwtAuthorizationMiddleware.checkIsAuthorized(action, roles);
},
currentUserChecker: async (actions: any) => {
return JwtAuthorizationMiddleware.extractUserFromJwtToken(actions);
}
});
// start the express server
const port: number = +(process.env.PORT || 44320);
app.listen(port, (err: Error) => {
console.log(`App listening on port ${port}`);
console.log("Press Ctrl+C to quit.");
});
}).catch(error => console.error("TypeORM connection error: ", error));
เวอร์ชันปัจจุบันของ cors และ Node
cors: "^2.8.4"
Node: v8.4.0
การเปลี่ยนแปลงเดียวที่เพิ่งทำไปเมื่อเร็วๆ นี้คือวันศุกร์เมื่อฉันรวมแพ็กเกจต่อไปนี้
multer: "^1.3.0"
@google-cloud/datastore: "^1.1.0"
@google-cloud/storage: "^1.4.0"
และทุกอย่างทำงานได้ดีจนถึงเช้านี้ เวอร์ชันเดียวกันถูกติดตั้งบน gcloud และมันทำงานได้ ดังนั้นฉันจึงสับสนเล็กน้อยว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้กะทันหันและสาเหตุอาจเกิดจากอะไร
ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก
คำตอบ #1
คุณต้องมีบางสิ่งบางอย่างเช่น
const cors = require('cors');
ในส่วนบนของไฟล์ของคุณ จากนั้นอ้างถึงโมดูลเป็น cors ไม่ใช่ Cors
คำตอบ #2
คุณสามารถอ่านเอกสารเกี่ยวกับ CORS ของ Express เพื่อเรียนรู้เพิ่มเติมได้
ในการใช้งาน CORS กับทุกเส้นทางในโปรเจกต์ของคุณ คุณสามารถเขียนได้ดังนี้:
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
