javascript - 如何在导入的文件中访问 fastify 应用实例
问题描述
我正在开发一个 fastify 驱动的 rest api,并试图将我的代码分成逻辑文件。我有一些类对象导入到我的服务器中,其中定义了 fastify 并发生了 fastify.listen。我不知道如何访问我导入的文件中的 fastify 实例。
应用程序.js
import fastify from 'fastify'
import autoload from 'fastify-autoload'
import { join } from 'desm'
export default function (opts) {
const app = fastify(opts)
app.register(autoload, {
dir: join(import.meta.url, 'routes')
})
return app
}
server.js
import createApp from './app.js'
import 'dotenv/config.js'
import Sessions from './scripts/sessions.js'
import emitter from 'central-event'
async function start () {
const app = createApp({ logger: true })
await app.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0')
const intervalSeconds = process.env.intervalSeconds * 1000
setInterval(function () {
emitter.emit('heartbeat')
}, intervalSeconds)
}
start()
我想访问导入到 server.js 中的 session.js 中的 fastify 应用程序实例,我尝试了各种方法,例如导入 fastify 并在其中创建应用程序,希望它能够被继承等。任何帮助将不胜感激。
解决方案
我找到了我需要的信息。在会话和其他人的导入中,我通过导出默认(应用程序)=> 类会话{}导出类
然后在服务器内部我导入它: import SessionsImp from './scripts/sessions.js'
然后通过应用程序传递: const SessionsClass = SessionsImp(app) const Sessions = new SessionsClass()
它看起来很复杂,但它可以按我的意愿工作,然后我可以用我正在加载的会话和其他类来装饰应用程序,并按照我的意愿在路由和插件中使用它们。
推荐阅读
- sql - SQL Server 脚本方程式
- hadoop - 在pyspark中如何计算?
- ios - 在 Swift 中使用按钮添加变量和返回数字
- java - SSL VPN 连接到使用 Java 的 Fortinet 防火墙
- javascript - 如何在 JSON 对象中连接双引号字符串
- mobile - Arduino MKR NB 1500 - 信号丢失后重新连接
- python - 如何修复国际象棋词典验证器中的索引错误
- javascript - 如何在带有 next.js 的数组映射函数中使用 if 语句
- ios - 如何检测和获取 UITextField 内容 (Swift)
- cookies - 附加到“Set-Cookie”属性的错误⚠️