为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只萌萌小番薯 2021-05-10 17:24:53
我已经将JavaScript代码转换为Typescript并收到错误模块没有默认导出我尝试使用花括号导入和使用module.exports导出,但它们均无效。contactController.tsconst contacts: String[] = [];// Handle index actionsexports.index = (req: any, res: any) => {    res.json({        data: contacts,        message: "Contacts retrieved successfully",        status: "success"    });};// Handle create contact actionsexports.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.tsimport contactController from "./contactController";在api-routes.ts中,当我尝试导入contactController模块时,它将引发错误模块没有默认导出如何导入而不会出现错误?我尝试使用“ ./contactController”中的“ import {contactController}”,但是效果不佳。
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

要完成Vasil的答案:

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


// <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关键字。


查看完整回答
反对 回复 2021-05-13
?
千巷猫影

TA贡献1829条经验 获得超7个赞

您需要将导出方式更改为:


const contacts: String[] = [];


// Handle index actions

const index = (req: any, res: any) => {

    res.json({

        data: contacts,

        message: "Contacts retrieved successfully",

        status: "success"

    });

};


// Handle create contact actions

const newContact = (req: any, res: any) => {


     // save the contact and check for errors

    contacts.push("Pyramids");


    res.json({

            data: contact,

            message: "New contact created!"

        });

};


export default {index, newContact};

然后,您应该可以像这样导入


import routes from './contactController';


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 1207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信