【问题标题】:Typescript : File '/accounts.ts' is not a module in a nodejs api打字稿:文件'/accounts.ts'不是nodejs api中的模块
【发布时间】:2020-06-28 09:10:24
【问题描述】:

我已经看过这个问题并找到了一些答案,但没有一个解决方案能解决我的问题。

下面是我的代码模型文件

//accounts.ts

const mongoose = require('mongoose');
var autoincrement = require('simple-mongoose-autoincrement');
const Accounts = mongoose.Schema(
    {
        id: { type: mongoose.Schema.Types.ObjectId, required: true, unique: true },
        accountDetails: { type: String },
        // other collection properties goes here.

    }   
);

Accounts.plugin(autoincrement, { field: 'id' });
module.exports = mongoose.model('Accounts', Accounts);

下面是我的仓库代码

//AccountsRepository.ts

// import { Accounts } from "../../models/accounts";
// import Accounts from "../../models/accounts";

我已经尝试了上述两种导入方法,但我得到了如下异常

File 'myPath/accounts.ts' is not a module.ts(2306)

我在其他文件中也遇到了同样的问题。

//AccountsRou​​ter.ts

import express from "express";
import accountsController from "../../controller/accountscontroller";

const accountsRouter = express.Router();

accountsRouter.get("/details", accountsController.getDetails);

exports = accountsRouter;

//App.ts

`import accountsRouter from "./accounts/accountsrouter";` --> this gives the error as below
Module 'myPath/accouts/accountsrouter"' has no default export.ts

我不想在我的 accountsRou​​ter 中进行默认导出。

我试过了:

我尝试改变导出方式,比如使用

module.export = accountsRouter

【问题讨论】:

    标签: node.js typescript ecmascript-6 importerror


    【解决方案1】:

    你可以试试括号

    ....
    export { accountsRouter }
    

    然后像这样导入模块:

    import { accountsRouter } from "./accounts/accountsrouter"
    

    【讨论】:

    • 如果我遵循这种方法,我会得到异常,因为此模块只能通过打开“esModuleInterop”标志并引用其默认导出来被 ECMAScript 导入/导出引用。
    • 您是否尝试在 .tsconfig 中使用 "esModuleInterop": true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2019-12-28
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多