如何导入非 node.js 文件?

Posted

技术标签:

【中文标题】如何导入非 node.js 文件?【英文标题】:How do you import non-node.js files? 【发布时间】:2011-06-07 11:09:08 【问题描述】:

如何加载不符合 node.js 格式的外部 js 文件。我正在尝试导入 json 序列化库。我该怎么做?

【问题讨论】:

有对 json 的内置支持(例如 JSON.stringify(obj)),您是否正在寻找已经支持的功能集之外的东西? @david 仅供现在和将来参考。我不想找到所有东西的 node.js 版本。 绝对不要导入第二个 JSON 库(我假设您正在查看 json2.js?)。 JSON.parse() 和 JSON.stringify() 从一开始都内置在 node 中。 @Will03uk “不适合 node.js 格式”是什么意思? 【参考方案1】:

编写包装器或更改代码。

什么应该自动使它工作? Node 应该如何知道哪些函数应该被导出?

您所能做的就是调整代码以匹配 Common JS 标准,但在此之前,请检查 Node.js Wiki 上的 API Docs 和 Modules Pages,看看是否有人已经完成了这项工作给你:)

如果您自己编写应该在浏览器和 Node.js 中工作的代码,您可以使用如下包装器:

(function(node) 
    // Your Awesome code here
    if (node) 
        exports.foo = ...

     else 
        window.foo = ...
    

)((function()return ('' + this).slice(8, -1) !== 'DOMWindow';)());

【讨论】:

【参考方案2】:

如果你信任代码(我的意思是,真的信任代码)那么你可以eval它:

eval(require('fs').readFileSync('somefile.js', 'utf8')); 

我不建议使用远程代码执行此操作(因为它可能会在您不知情的情况下更改),但如果您有某个内容的本地副本,那应该没问题。

【讨论】:

这是一个可怕的答案。我喜欢它。 接受答案中的简单要求比读取 JSON 效果更好。如果 JSON 是一个配置文件,并且您想使用 webpack、背包等将它注入到您的 .js 文件中,这也是有益的。 如果它来自您已经信任的文件,就像您在执行require()时一样信任【参考方案3】:

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

【讨论】:

以上是关于如何导入非 node.js 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 node.js 模块导入 node.js 模块

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

node.js如何引用其它js文件

node require 运行步骤

node.js如何运行

如何在 Node.js 中使用 ES6 导入? [复制]