我有一个不是为Node.js编写的JavaScript文件。它实际上是由我编写的,但如果您将其视为第三方库,这个问题可能更容易理解。
通常,Node.js模块仅将module.exports
对象公开给外部代码。这需要在编写Node.js文件时使用。
但是,该文件不是为Node.js编写的,但我希望将其包含在Node.js模块中。我无法编辑此文件,因为它将在以后使用,与Node.js无关。
我想我可以通过阅读文件并在内容上调用eval
来解决它,但有更好的方法吗?
TL; DR
如何将.js文件包含到Node.js模块中,而不重写它以使用像exports
这样的Node.js特定代码?
P.S。我想在Node.js中使用它的原因是在它部署到其他地方之前进行一些测试。
答案 0 :(得分:2)
这取决于代码在该文件上的写法。如果文件包含类或单个对象,则可以执行以下操作:
(function(global) {
function MyClass() {
}
MyClass.prototype = {
...
};
if( typeof module !== "undefined" && module.exports ) {
module.exports = MyClass;
}
else if ( global ) {
global.MyClass = MyClass;
}
})(this);
如果需要,您可以将全局分配修改为更深的命名空间。