Nodejs全局函数

时间:2015-04-09 16:49:24

标签: javascript node.js

我有一个非常基本的功能,看起来像这样,它位于一个名为functions.js

的文件中
function echo(input){
    process.stdout.write(echo);
}

当我添加文件并像这样调用echo()时:

主档案:

require("functions.js");
require("another_file.js");

another_file.js

echo("hello!");

它给了我以下错误:

ReferenceError: echo is not defined

有没有办法让我在没有使用exports的情况下创建一个像这样的全局函数?

2 个答案:

答案 0 :(得分:6)

functions.js内,您可以访问节点的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");

答案 1 :(得分:0)

当你想要require特定文件时,你需要提供它的绝对路径

require('.\functions.js');