我过去使用的typescript主要是为了在浏览器中运行客户端代码。现在我正在尝试将我的库的一些类重用于node.js.我的设置如下:
Node.js似乎迫使我使用commonjs作为打字稿的模块库。因此,我在服务器端的代码也将被迫使用模块。如何在此项目中包含我的SharedLibrary?似乎模块无法访问模块外的任何东西,除非它本身就是一个模块,但我也无法将我的SharedLibrary更改为模块,因为这会迫使我改变我的整个代码库。如果没有改变一切,有什么方法可以解决这个问题吗?
示例代码: 库文件A.ts:
class A {
public call() {
console.log("class A");
}
}
服务器文件C.ts:
export class C {
public call(): void {
console.log("class c");
let a = new A(); //this will compile but crash during runtime
a.call();
}
}
node.js主文件:
import * as myodule from "./C";
var s = new myodule.C();
s.call();
它将打印" class c"然后崩溃,因为它无法找到A级。如果我将导出添加到" A类和#34;它可以正常工作。然后导入它,但我的客户端代码停止工作。
到目前为止我尝试了什么:
答案 0 :(得分:0)
如果不改变一切,有没有办法解决这个问题?
只需在任何地方使用commonjs并使用像webpack这样的模块加载器/捆绑器。以下是快速入门:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html
这是一个使用此方法http://alm.tools/
的相当大的项目