我有一个非常基本的函数,如下所示,它位于一个名为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
发布于 2015-04-09 17:10:16
在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");https://stackoverflow.com/questions/29544417
复制相似问题