我有一个非常基本的函数,看起来像这样,它在一个名为 functions.js
function echo(input){
process.stdout.write(echo);
}
当我添加文件并像这样调用 echo()
时:
主文件:
require("functions.js");
require("another_file.js");
另一个文件.js
echo("hello!");
它给我以下错误:
ReferenceError: echo is not defined
有没有办法让我不必使用 exports
就可以创建一个像这样的全局函数?
最佳答案
在 functions.js
中,您可以访问 Node 的 global
变量,这类似于浏览器中的 window
变量。正如柏拉图在评论中建议的那样,您只需执行 echo = function echo(input){ ... }
即可将其添加到全局。但是,如果您使用的是旨在捕获常见错误(例如意外创建全局变量)的严格模式,这将引发错误。
安全地将 echo
添加为全局变量的一种方法是将其添加到全局 global
变量中。
"use strict";
global.echo = function echo(input) {
process.stdout.write(input);
}
我认为通常使用 exports
是更好的做法,因为否则一旦包含 functions.js
(来自任何其他文件),您将可以访问 echo
在每个文件中,很难追踪它的来源。
为此,您需要让您的 functions.js
看起来更像:
"use strict";
module.exports.echo = function echo(input) {
process.stdout.write(input);
}
然后在你的主脚本中做这样的事情:
"use strict";
var functions = require("./functions.js");
functions.echo("Hello, World");
关于javascript - Nodejs 全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29544417/