【问题标题】:Can access module property with square bracket notation but not with dot property notation可以使用方括号表示法访问模块属性,但不能使用点属性表示法
【发布时间】:2021-05-25 00:16:28
【问题描述】:

我正在从控制器文件中导出一个函数:

import adminSaveSnippet from './admin/adminSaveSnippet';
exports.saveSnippet = adminSaveSnippet;

我正在将函数导入到我的路由文件中:

import * as express from 'express';
const adminRouter = express.Router();
import * as admin from '../controllers/adminControllers';

adminRouter.put('/save/snippet', admin['saveSnippet']);

export default adminRouter;

我可以通过admin['saveSnippet'] 访问admin 中的saveSnippet 函数,但是当我使用点符号admin.saveSnippet 时出现以下错误:

src/routes/admin.ts:5:40 - error TS2339: Property 'saveSnippet' does not exist on type 'typeof import(".../src/controllers/adminControllers")'.

我不太确定发生了什么。我没有使用任何irregular identifiers,并且尝试了几种不同的导出函数的方法(例如import { saveSnippet } from '../controllers/adminControllers'),但仍然出现相同的错误。

为了完整起见,这里是我的 adminSaveSnippet 文件:

export default function adminSaveSnippet (_req, res) {

  console.log('here');
  res.send('saved').status(200);
}

【问题讨论】:

标签: node.js typescript node-modules


【解决方案1】:

这很可能只是 TypeScript 语法问题。

在您的 adminControllers.ts 文件中,尝试使用 export 语法,就像您在 adminSaveSnippet 文件中所做的那样,而不是 CommonJS exports

export {
  adminSaveSnippet as saveSnippet
}

【讨论】:

  • 似乎奏效了。刚改成export { adminSaveSnippet as saveSnippet }
猜你喜欢
  • 2020-10-25
  • 2017-07-27
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多