【问题标题】:Why do these 2 NodeJS / Typescript imports give different results?为什么这 2 个 NodeJS / Typescript 导入会给出不同的结果?
【发布时间】:2019-10-02 20:38:06
【问题描述】:

在一个 NodeJS 项目中,我安装了typescript 3.2、express 4.16 和@types/express 4.16

我正在使用 Typescript 编写我的应用程序,以便稍后进行转换。 @types/express 的文档说要以这种方式导入和使用:

import * as express from "express";
const app = express();

但是,当我这样做时,第二行会引发错误,因为 express 不是函数(没有调用签名)。当我控制台记录express 时,我得到一个具有application 属性的对象

另一方面,如果我以这种方式导入和使用:

import express = require('express');
const app = express();

然后一切正常,控制台日志express 显示一个名为createApplication 或类似的函数。该函数本身似乎具有与第一种方法相同的application 属性。

有什么区别?

【问题讨论】:

    标签: node.js typescript express node-modules require


    【解决方案1】:

    TypeScript@2.7 开始,支持以下用于导入默认模块的语法:

    import b from "bar";
    

    带有 * 的示例将导入模块的所有导出 as a module object 但你可能想要

    import express from "express";
    const app = express();
    

    【讨论】:

    • 谢谢彼得!您的第一个摘录不起作用; express.application() 与您的第二个摘录中的 express() 函数不同,因为第一个因“预期的 2-3 个参数”而失败。但是,您在第二段摘录中一针见血:import express from 'express' 正是我想要的。请修复或删除错误代码,以便我接受您的回答!
    猜你喜欢
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多