我是Adonisjs框架的新手。我一直在使用这个很棒的框架开发我的第一个nodejs应用程序。我一直在尝试创建像
这样的应用程序结构为此,我尝试创建一个基类(app / Http / Controllers / BaseController.js),如下所示:
'use strict'
class BaseController {
constructor () {
[...]
}
}
module.exports = BaseController
Admin class(app / Http / Controllers / AdminController.js)
'use strict'
const BaseController = use('BaseController')
class AdminController extends BaseController {
constructor () {
[...]
}
}
module.exports = AdminController
前级(app / Http / Controllers / FrontController.js)
'use strict'
const BaseController = use('BaseController')
class FrontController extends BaseController {
constructor () {
[...]
}
}
module.exports = FrontController
但是我在Admin和Front控制器上都收到此错误Cannot find module 'BaseController'
。我只需要一个关于如何在adonisjs框架中创建基本继承类结构的提示/示例。
答案 0 :(得分:1)
我假设您使用的是框架的最新版本4.0:
adonis.js Ioc容器会自动加载应用目录的内容,并在" App"命名空间(参见Adonis.js 4.0 > Ioc container > Autoloading)。文件" app / Http / Controllers / BaseController.js"的导出因此可以在名称" App / Http / Controllers / BaseController"下获得。
所以对你的例子来说:
'use strict'
const BaseController = use('App/Http/Controllers/BaseController') // <--
class AdminController extends BaseController {
constructor () {
[...]
}
}
module.exports = AdminController
如果你真的想使用没有命名空间的控制器(我不推荐)你可以通过在&#34; start / app.js&#34;中添加一个别名来为它们引入一个简短的唯一名称。配置文件:
...
const aliases = {
'BaseController': 'App/Http/Controllers/BaseController'
}
...
之后,您可以通过调用:
来要求控制器类use('BaseController')
注意:不要忘记将super()
放在子类的构造函数中:
constructor () {
super()
}