如何加载不符合node.js格式的外部js文件。我正在尝试导入json序列化库。我怎么能这样做?
答案 0 :(得分:33)
2个答案......
1)JSON对象内置于node.js,因此您只需调用JSON.parse()和JSON.stringify(),就不需要为此特定情况导入外部代码。
2)要导入外部代码,node.js遵循CommonJS模块规范,你可以使用require()
所以,如果你有一个名为external.js的文件(与你的其余代码位于同一目录中):
this.hi = function(x){ console.log("hi " + x); }
从节点开始:
var foo = require("./external");
foo.hi("there");
您将看到输出hi there
答案 1 :(得分:10)
如果您信任该代码(我的意思是,真的信任该代码),那么您可以eval
:
eval(require('fs').readFileSync('somefile.js', 'utf8'));
我不建议使用远程代码执行此操作(因为它可能会在您不知情的情况下进行更改)但如果您有本地副本,则应该没问题。
答案 2 :(得分:3)
编写包装器或更改代码。
什么应该自动使它工作? Node如何知道应该导出哪些函数?
您所能做的就是调整代码以匹配Common JS标准,但在此之前,请检查Node.js Wiki上的API Docs和Modules Pages,看看是否有人已经为你完成了这项工作:)
如果您自己编写应该在Browser和Node.js中运行的代码,您可以使用如下所示的包装器:
(function(node) {
// Your Awesome code here
if (node) {
exports.foo = ...
} else {
window.foo = ...
}
})((function(){return ('' + this).slice(8, -1) !== 'DOMWindow';})());