将 Ltijs 集成到现有的 sails 应用程序中

Integration of Ltijs into existing sails app

我想在我们的 Sails 应用程序中使用 Ltijs 库 (https://cvmcosta.me/ltijs)。 部署 Ltijs 作为另一个快速服务器的一部分的方法是这样的(来自 Ltijs 文档):

    const app = express()
    lti.setup('EXAMPLEKEY', { url: 'mongodb://localhost/database' })
    
    // Start LTI provider in serverless mode
    await lti.deploy({ serverless: true })
    
    // Mount Ltijs express app into preexisting express app with /lti prefix
    app.use('/lti', lti.app)

将中间件放入 Sails 的方法是这样的(没有 app.use(...)!):

// config/http.js

const lti = require('ltijs').Provider;
lti.setup(
        '8swieleivBef',
        {url: 'mongodb://localhost:27017/mysailsapp'},
);

lti.deploy({serverless: true});

module.exports.http = {

  middleware: {

    order: [
      'cookieParser',
      'session',
      'bodyParser',
      'ltiExpressAdapter', //<-------- my middleware adapter -----------------
      'compress',
      'poweredBy',
      'router',
      'www',
      'favicon',
    ],

    ltiExpressAdapter: lti.app, //<-------- my middleware adapter -----------------
    
    .
    .
    .

后者有效,但效果“不错”,因为现在每个请求都被 Ltijs 捕获,应用程序不再有效。 我的问题是,如何将路径 '/lti' 从 app.use('/lti', lti.app) 带入风帆游戏?

我尝试了很多这样的方法都不起作用:

ltiExpressAdapter: (function () {
  return async function (req, res, next) {
    if (req.path.match(/^\/lti.*$/)) {
      return lti.app;
    }
    return next();
  };
})(),

在此先感谢您的帮助!

我似乎找到了使用 app.use(...):

的解决方案
// config/http.js

const express = require('express');   //<------ NEW -----
const app = express();                //<------ NEW -----

const lti = require('ltijs').Provider;
lti.setup(
        '8swieleivBef',
        {url: 'mongodb://localhost:27017/ltijsdb'},  //<------ (NEW) -----
);

lti.deploy({serverless: true});

module.exports.http = {

  middleware: {

    order: [
      'cookieParser',
      'session',
      'bodyParser',
      'ltiExpressAdapter', //<-------- my middleware adapter -----------------
      'compress',
      'poweredBy',
      'router',
      'www',
      'favicon',
    ],

    ltiExpressAdapter: app.use('/lti', lti.app), //<------ NEW -----
    
    .
    .
    .

现在只有当我调用 /lti 路径 (http://localhost:1337/lti) 并且应用程序的其余部分像以前一样运行时,我才会从 Ltijs 收到扩展的错误消息。

现在我希望可以继续设置 Ltijs 并尝试从测试用户连接。

(我还更改了 Ltijs 数据库,以便它不会与我的应用程序的数据库混淆。)