直到今天早上工作正常,现在,我突然收到类型错误,指出Cors is not a function
我的代码
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上,这样做有点让我感到有些困惑,为什么我突然得到这个错误,可能是什么原因。
非常感谢任何帮助
答案 0 :(得分:1)
你必须拥有诸如
之类的东西const cors = require('cors');
位于文件顶部,然后将该模块称为cors
,而不是Cors
。
答案 1 :(得分:0)
好的,所以我发现问题原来是PEBKAC。
在gcloud中实现文件上传和存储时,我必须在gcloud上启用CORS并将设置文件保存在项目的根目录中,此文件名为cors.json
。
在我上面的问题中发布的代码中,import语句正在读取我的cors.json
文件而不是(我认为)cors
NPM包。
从这篇文章中吸取的教训应该让其他人犯同样的错误我刚才做的就是小心你的文件名称以及放置它们的位置!!!
答案 2 :(得分:0)
从“ cors”导入cors; 用这个。 对我来说一切正常