【问题标题】:Split Koa router and controller in multiple files将 Koa 路由器和控制器拆分为多个文件
【发布时间】:2019-10-22 18:30:32
【问题描述】:

我正在尝试拆分我的应用程序。 不幸的是,调用控制器不起作用。一旦我注释掉控制器和 post 方法,它就可以调用服务器。

route/image.ts

const imageController = require('../controllers/imageController.ts')

module.exports = ({ router }) => {
  router
    .get('/image', ctx => {
      ctx.body = 'Image'
    })
    .post('/image', imageController.newImage)
}

controller/imageController.ts

import { BaseContext } from 'koa'

export default class imageController {
  static newImage = (ctx: BaseContext) => {
    // return OK status code
    ctx.status = 200
    ctx.body = 'Test'
  }
}

错误

Unexpected token {                                                                                                                                                                                                                                        11:44:42

  (function (exports, require, module, __filename, __dirname) { import { BaseContext } from 'koa'
  ^

  SyntaxError: Unexpected token {
  at new Script (vm.js:84:7)
  at createScript (vm.js:264:10)
  at Object.runInThisContext (vm.js:312:10)
  at Module._compile (internal/modules/cjs/loader.js:684:28)
  at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
  at Module.load (internal/modules/cjs/loader.js:620:32)
  at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
  at Function.Module._load (internal/modules/cjs/loader.js:552:3)
  at Module.require (internal/modules/cjs/loader.js:657:17)
  at require (internal/modules/cjs/helpers.js:22:18)

【问题讨论】:

  • 您遇到错误了吗? “不起作用”很难诊断!
  • @Evert 我已经更新了描述。感谢您的帮助!

标签: typescript koa


【解决方案1】:

您的错误表明您正在尝试运行您的打字稿文件没有打字稿。 import { x } from 'y'; 行在您的 node.js 版本中无效,并且鉴于您正在导入类型... typescript 会删除该行。

因此,请确保您运行 tsc 并运行您的 .js 文件,而不是您的 .ts 文件。

【讨论】:

  • 首先,谢谢。这就是解决方案!还有两个问题: import { BaseContext } from 'koa'。我怎么能用require来做到这一点,因为不允许在模块之外导入。以及如何导入路由器并将其设置为路由器道具的类型以删除隐式类型。
  • @F4ll0ut 如果您有更多问题,您应该打开一个包含更多信息和代码示例的新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2011-11-10
  • 2019-12-12
  • 2015-07-28
  • 1970-01-01
相关资源
最近更新 更多