Я собираюсь написать сложный Incoming WebHook для Rocket.Chat. Чтобы избежать беспорядка в одном файле, я взял Typescript. Rocket.Chat требует класс с именем Script
с некоторыми предопределенными методами, такими как process_incoming_request
(один простой пример: https://rocket.chat/docs/administrator-guides/integrations/).
моя текущая настройка проекта выглядит следующим образом:
tsconfig.ts
{
"files": [
"src/main.ts"
],
"compilerOptions": {
"noImplicitAny": true,
"target": "es2015"
}
}
gulpfile. js
var gulp = require("gulp");
var browserify = require("browserify");
var source = require("vinyl-source-stream");
var tsify = require("tsify");
var uglify = require("gulp-uglify");
var buffer = require("vinyl-buffer");
gulp.task(
"default",
function () {
return browserify({
basedir: ".",
debug: true,
entries: ["src/main.ts"],
cache: {},
packageCache: {}
})
.plugin(tsify)
.transform("babelify", {
presets: ["es2015"],
extensions: [".ts"]
})
.bundle()
.pipe(source("bundle.js"))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest("dist"));
}
);
main.ts
import {RequestInterface} from "./Interface/RequestInterface";
class Script {
process_incoming_request(request: RequestInterface) {
// some code
}
}
Процесс yarn gulp
проходит без ошибок, но при использовании сгенерированного кода внутри части скрипта webhook это приводит к ошибке:
Incoming WebHook.error script.js:1
ReferenceError: module is not defined
at script.js:1:4307
at Script.runInContext (vm.js:127:20)
at Script.runInNewContext (vm.js:133:17)
at getIntegrationScript (app/integrations/server/api/api.js:70:12)
at Object.executeIntegrationRest (app/integrations/server/api/api.js:166:13)
at app/api/server/api.js:343:82
at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
at Object._internalRouteActionHandler [as action] (app/api/server/api.js:343:39)
at Route.share.Route.Route._callEndpoint (packages/nimble_restivus/lib/route.coffee:150:32)
at packages/nimble_restivus/lib/route.coffee:59:33
Я не настолько знаком с Typescript, Node и всем прочим. Поэтому главный вопрос заключается в том, как я могу добиться, чтобы процесс генерировал класс (или сценарий, который предоставляет класс) с именем Script
с помощью метода process_incoming_request
. Я также не уверен, генерирует ли мой скрипт ошибку или часть RocketChat.
Спасибо!