私はExpress.jsで構築され、TypeScriptでコード化されたNode.jsサーバーを持っています。これは、動的URLに要求されているデータベース・オブジェクトのSequelizeモジュールをロードし、その後、ルールで活字体モジュールをロードしようとNode.js/ExpressでTypeScriptモジュールを動的にインポートできますか?
server.ts
private get(req: Request, res: Response, next: NextFunction, objectName: string) {
var DatabaseObject = require("./models/" + objectName + ".js")(this.orm, Sequelize.DataTypes);
var Transform = require("./routes/" + objectName + ".js");
var transform = new Transform();
// ...
console.log(req.query["columns"]);
console.log(transform.columnWhitelist);
console.log(transform);
// ...
if (transform.columnWhitelist) {
console.log("Column Whitelist Exists.");
}
// ...
}
:ここに私のサーバーに対してGET呼び出しの抜粋ですここに私のルールセットクラスの始まりだなど、列が上照会することができ、選択することができますどの列に:
account.ts
export default class Transform {
static columnWhitelist : Object = {"id": "id", "name": "name", "parentAccountId":"parentAccountId", "masterAccountId":"masterAccountId"};
constructor() { }
}
しかし、私のアプリケーションを実行している、私が手:
id,name,parentAccountId
undefined
{ default:
{ [Function: Transform]
columnWhitelist:
{ id: 'id',
name: 'name',
parentAccountId: 'parentAccountId',
masterAccountId: 'masterAccountId' } } }
は、コールtransform.columnWhitelistを作り、私は同様に生成されたJavaScriptファイルでそれを見たにもかかわらず、未定義得ます。私もちょうど試してみた:
var transform = require("./routes/" + objectName + ".js");
または:
var transform = require("./routes/" + objectName + ".js")();
しかし、これらの作業のどちらをどちらか。あなたはtsconfig.json内のモジュールとしてcommonjsを持っており、デフォルトとしてエクスポートクラスを変換する場合は、
var transform = require("./routes/" + objectName + ".js").default;
あなたを使用したくない場合は
今すぐ取得します。どうもありがとう!ある時点で、私は 'var Transform = require(" ./ routes/"+ objectName +" .js ");を試しました。 var transform = Transform.Transform; 'などのようなものですが、間違った型を入力したのでしょうか? – NobleUplift