模块转换为 Typescript 后没有默认导出

2024-06-04

我已将 JavaScript 代码转换为 Typescript 并收到错误

模块没有默认导出

我尝试过使用花括号导入并使用 module.exports 导出,但它们都不起作用。

contactController.ts

const contacts: String[] = [];

// Handle index actions
exports.index = (req: any, res: any) => {
    res.json({
        data: contacts,
        message: "Contacts retrieved successfully",
        status: "success"
    });
};

// Handle create contact actions
exports.new = (req: any, res: any) => {

     // save the contact and check for errors
    contacts.push("Pyramids");

    res.json({
            data: contact,
            message: "New contact created!"
        });
};

api-route.ts

import contactController from "./contactController";

在 api-routes.ts 中,当我尝试导入 contactController 模块时,它抛出错误

模块没有默认导出

如何导入才不会报错?我尝试过使用“从“./contactController”导入{contactController}”,但效果不佳。


文档(请参阅“导出”和“导入”部分): Typescript 模块文档 https://www.typescriptlang.org/docs/handbook/modules.html.

完成瓦西尔的回答:

当您以这种方式导入模块时:

// <some_file>.ts
import <whatever_name_I_want> from "<path_to_my_awesome_module>";

<my_awesome_module>.ts需要有一个默认导出。例如,可以这样完成:

// <my_awesome_module>.ts
export default foo = () => { // notice the 'default' keyword
  // ...
};

export bar = () => {
  // ...
};

通过上面的代码,<whatever_name_I_want>将是foo方法(一个模块只能有1默认导出)。为了导入bar方法也是如此,您必须单独导入它:

// <some_file>.ts
import <whatever_name_I_want>, { bar } from "<path_to_my_awesome_module>";

但根据您想要执行的操作,可能不需要使用默认导出。您可以简单地使用以下命令导出所有方法export关键字,像这样:

// contactController.ts
export index = (req: any, res: any) => { // no need for a default export
  // ...
};

export create = (req: any, res: any) => {
  // ...
};

并将它们都导入括号中:

// api-routes.ts
import { index, create } from "./contactController";

// Usage
index(...);
create(...);

或者在全局变量中:

// api-routes.ts
import * as contactController from "./contactController";

// Usage
contactController.index(...);
contactController.create(...);

PS:我给你重命名了new中的方法create因为“new”已经是 JavaScript 关键字了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块转换为 Typescript 后没有默认导出 的相关文章

  • 使用导入模块对 angular2 组件进行单元测试

    我正在尝试在使用 angular material2 的组件上编写测试 但是当我将其添加到我的 testModule 声明中时 我得到 Error Template parse errors md card title is not a k
  • DataTable 不是 DataTables JQuery 库的函数错误

    我有一个使用 Datatable 库的简单示例 我让它与 JSFiddle 一起工作 http jsfiddle net 3hhn7y7f http jsfiddle net 3hhn7y7f 但是当我尝试使用实际文件执行此操作时 出现以下
  • d3 添加 html 链接到表中的数据列

    我是 d3 和 Javascript 的新手 我正在尝试添加一个 a 元素 带有 href 属性 到指定数据列中的每个值 目前我正在使用以下代码来生成表 function tabulate data columns var table d3
  • 带标头认证的跨域请求

    我需要发送一个Get具有标头身份验证的跨域来源请求 它在 Chrome 和 Firefox 中工作正常 但在 Safari 和 IE 中遇到问题 同样在随机情况下它会返回 401 解决这个问题的最佳选择是什么 如果我正确理解了问题 您可以使
  • 如何检查模糊事件中的值是否发生更改?

    基本上我需要检查 模糊 事件的文本框中的值是否发生更改 以便如果该值没有更改 我想取消模糊事件 如果可以检查用户在输入 HTML 元素的模糊事件中更改了值吗 我不认为有一种本地方法可以做到这一点 我要做的就是添加一个函数focus将当前值保
  • 将表格单元格添加到现有表格行,jQuery

    我正在尝试使用 jQuery 将值添加到表中 不幸的是 我不知道如何让 jQuery 将表单元格添加到现有行 例如 td a href key a td click function e e preventDefault testset k
  • 在容器大小调整时调整传单地图的大小

    我有一个 div 包含传单地图 在某些事件发生时 高度 div 将会被改变 我希望地图能够调整到其周围的新尺寸 div 以便旧中心位于调整大小的较小或较大地图的中心 我尝试使用invalidateSize 功能 但似乎根本不起作用 之后如何
  • 使用 dat.gui 保存参数似乎损坏了? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在 dat gui 中保存参数似乎有问题 或者我遗漏了一些非常明显的东西 单击齿轮图标时会出现问题 该图标应打开一个弹出
  • 分页打印所有数据

    我在打印数据表中具有分页的所有数据时遇到问题 我已经做过研究并在此链接中发现了同样的问题 仅打印 https stackoverflow com questions 468881 print div id printarea div onl
  • 仅调用一次/在 AngularJS 服务中缓存来自 $http get 的数据

    这可能听起来像一个非常简单 愚蠢的问题 但我需要问它 因为我之前没有遇到过这种情况 好吧 我的 angularJS 应用程序中有一项服务 该服务当前包含 4 个方法 它们都执行 80 相同的功能 代码 我希望提高效率 这是我的服务的样子 删
  • 如何在 JavaScript 中将十六进制字符串转换为 Uint8Array 并返回?

    我想转换一个十六进制字符串 例如bada55 into a Uint8Array然后再回来 普通JS const fromHexString hexString gt Uint8Array from hexString match 1 2
  • Yepnope 和 Modernizr screen.width 条件

    我正在尝试 本地 使用 Yepnope 和 Modernizr 来加载 CSS 和 JS 文件 这样我就可以更好地管理文件并轻松编码 这是当前的布局 Modernizr load test Modernizr mq all and max
  • 冻结 TH 标题和滚动数据

    我有一个 html 表 我想冻结标题行标签以滚动数据 我怎样才能做到这一点 我需要使用Dom吗 谢谢 我的解决方案是使用两个表并固定列宽 下面的表格位于可滚动的 div 中 并且没有标题
  • 异步等待和获取语法在 React 中不起作用

    这是我的代码 export class App extends Component constructor props super props async fetchSport sport let headers new Headers h
  • 点击超链接时调用 javascript 函数

    我正在 ASP NET 的 C 代码隐藏文件中动态创建超链接 我需要在客户端点击时调用 JavaScript 函数 我该如何做到这一点 仍然更整洁 而不是typical href or href javascript void or hre
  • Javascript:在文档中查找 URL

    如何在文档中查找 URL 即 www domain com 并将其放入锚点中 www domain com html Hey dude check out this link www google com and www yahoo com
  • Bootstrap 样式不适用于 Angular2 组件

    Bootstrap 样式不适用于 Angular2 组件 在以下 Angular2 组件中 它不能作为 ui 中的引导流体容器工作 如果我在带有 div 元素的组件内使用 container fluid 则会在作品中出现 例如 不工作 Co
  • Typescript 字符串文字联合类型

    我有一个类属性 其类型是多个字符串文字的联合 public reaction haha wow angry sad like 我想做的是将这些字符串定义在某种数组的其他位置 然后在属性定义中使用该数组 所以像这样 allowedString
  • 如何在javascript中获取表中复选框的值

    我需要获取表行中提供跨度的复选框的值 下面的代码是我的项目的一部分 HTML 代码用于动态我的表格 而 javascript 代码用于获取不适用于复选框的元素的值 它适用于其他输入元素 我的桌子 var html tr class rows
  • WKScriptMessageHandler 不会侦听网页上按钮元素上的“onclick”或“click”事件。网页是使用Reactjs开发的

    我正在使用一个WKWebView在 UIViewController 的视图中使用 url 端点显示托管在服务器上的网页 该网页使用Reactjs 这就是我所掌握的有关该网页的所有信息 该代码创建一个 Web 视图并将该 Web 视图作为控

随机推荐