NodeJS:导入所有局部变量

时间:2015-08-12 08:02:28

标签: javascript node.js typescript

我有一个关于TypeScript的项目,我需要在NodeJS上运行已编译的JS文件。问题是我无法更改TypeScript文件。问题是TypeScript编译器生成package main import "fmt" func main() { n := 123454321 r := reverse(n) fmt.Println(r == n) } func reverse(n int) int { r := 0 for { if n > 0 { r = r*10 + n%10 n = n / 10 } else { break } } return r } 并将所有变量和函数附加到此var mymodule。而且我不知道如何将此模块导入NodeJS。我可以在NodeJS中导入所有变量(包括本地)吗?

1 个答案:

答案 0 :(得分:0)

做正确的事

TypeScript项目应该使用CommonJS模块系统。

手动添加导出

如果您无法更改模块系统,可以在.ts文件末尾添加:

declare var module: { exports };
if (typeof module === "object" && module.exports)
    module.exports = mymodule;

导出多个子模块

您可以写this.mymodule1 = ...而不是var mymodule1 = ...。此模式适用于Node.js和浏览器。

使用“eval”

  

我无法更改TypeScript文件

如果您根本无法更改.ts文件,请使用相关eval中的.js

var fs = require("fs");
eval(fs.readFileSync("myTSModule.js", "utf8"));

mymodule.myCoolMethod("hello");

使用“runInContext”

此外,您可以通过runInContext

隔离环境模块的运行上下文
var context = vm.createContext();
vm.runInContext(code, context);
var mymodule = context.mymodule;