带有本地护照的 TypeScript:不能将“new”与类型缺少调用或构造签名的表达式一起使用

Posted

技术标签:

【中文标题】带有本地护照的 TypeScript:不能将“new”与类型缺少调用或构造签名的表达式一起使用【英文标题】:TypeScript with passport-local: Cannot use 'new' with an expression whose type lacks a call or construct signature 【发布时间】:2017-01-29 14:55:44 【问题描述】:

我正在尝试将 passport-local 包与 TypeScript (2.0.0RC) 一起使用,但出现编译器错误:

错误 TS2351:无法将“new”与类型缺少调用或构造签名的表达式一起使用

附加的 VS Code 中的屏幕截图(工具提示下的代码只是 passport.use()。

我这辈子都不知道如何给它想要的签名。

我在该主题上找到了fewissues,但我尝试的任何操作都会产生其他编译器错误。

有人对如何让编译器满意这段代码有什么建议吗?

【问题讨论】:

如果没有看到 passport-local 的类型就很难判断,但 new localStrategy.Strategy( ... 可能有用。 就是这样! Doh - 我觉得自己像个合适的布偶。感谢您抽出时间指出这一点! 简单的解决方法是更改​​您的导入语句。尝试“从'passport-local'导入Strategy as localStrategy。然后你的new localStrategy就可以正常工作了。 【参考方案1】:

试试这个:

import * as passportLocal from 'passport-local';
const LocalStrategy = passportLocal.Strategy;

【讨论】:

【参考方案2】:
import  Strategy as LocalStrategy  from 'passport-local';

【讨论】:

以上是关于带有本地护照的 TypeScript:不能将“new”与类型缺少调用或构造签名的表达式一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Expressjs护照本地无法注销

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

护照本地猫鼬帐户注册的其他字段?

护照本地猫鼬帐户注册的其他字段?

使用带护照本地的护照Facebook策略时无法将用户序列化到会话中

如何修复阻止注册用户登录的护照本地身份验证错误