将 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 数据库,以便它不会与我的应用程序的数据库混淆。)
我想在我们的 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 数据库,以便它不会与我的应用程序的数据库混淆。)