javascript - 为什么扩展的 Express Request 突然中断了?

标签 javascript node.js express

我正在运行 Node v12、Express v4.16.4 和 Typescript 版本 3.8.3 并使用 VSCode。

这段代码近 8 个月以来一直没有变化,我们在每个路由器中都使用它。

export interface ICustomRequest extends Request {
    district: string;
}

这几个月来一切都运转良好。我团队中的每个其他人都使用与我相同的代码,并且仍然没有任何问题。今天早上突然——由于所有路由器中涉及 req.query 的错误,我的代码都无法编译。

诸如此类的事情:

public async get(req: ICustomRequest, res: Response, next: NextFunction) {
    try {
        const property = req.query.property;

        let results: await doTheThing(property);
        res.json(results);

    } catch (error) {
        next(error);
    }
}

其中 req.query.property 抛出错误,例如:“错误 TS2345:‘string | Query | (string | Query)[]’类型的参数不可分配给‘string’类型的参数。 类型“查询”不可分配给类型“字符串”。”

我不明白为什么突然间这成为我项目中每个文件中的一个全面问题,而其他三个开发人员没有这个问题,而且我们都使用相同的版本。如果我添加 .toString() 它可以工作,但是当其他人没有问题时,我不能证明只为我自己修改 202 个实例是合理的。关于我的环境有什么想法会导致这些打字问题吗?

我尝试过的事情:

从上游完全重新克隆我的项目。重新安装 Node 。重新安装 typescript 。 npm 缓存清理。删除 Node 模块并重新安装。删除 package-lock.json。

最佳答案

这是安装没有严格定义依赖项的“@types”包时的典型问题。我猜 NPM 已经安装了最新版本的 @types/express

尝试降级到4.16.11或更高版本(可以一一尝试)。

"devDependencies": {"@types/express": "4.16.11"}

给 future 的教训。始终将正确的 package-lock.json 提交到存储库。这应该可以防止此类问题。

关于javascript - 为什么扩展的 Express Request 突然中断了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61260891/

相关文章:

Javascript 奇怪的随机行为

javascript - 如何应用这个AJAX请求而不需要重新加载页面才能生效?

node.js - 在我们的库中,如何告诉 webpack 跳过依赖项?

javascript - Passport.js:无法读取未定义的属性 'username'( Node )

javascript - 尝试读取 MYSQL 查询结果时无法读取未定义的属性 'length'

node.js - 如何根据 JSON 数据渲染多个部分?

javascript - facebook-node-sdk 用于 node.js 范围参数?

javascript - 如何在 Symfony 3 中以 Json 形式从存储库返回对象

javascript - 在从 PHP 服务器返回的 HTML 之间放置内容(或广告)?

javascript - 使用两个文本框用于 AngularJS 中的正方形的简单计算器?