javascript - Nodejs 全局函数

标签 javascript node.js

我有一个非常基本的函数,看起来像这样,它在一个名为 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/

相关文章:

javascript - 如何使用 Puppeteer 等待事件触发的页面重新加载?

javascript - 尝试在 if 子句中将变量从 js 发布到 php

javascript - 计算通过 JS 选中并显示在页面上的复选框总数

javascript - Cloudkit JS - 由创建记录的用户查询记录

xml - 基于 Node.js 中的 xml 架构构建 xml

mysql getConnection() 不返回nodejs中的回调函数

javascript - Node.js req.params.locationid 没有抓取 ID

javascript - 将 nodejs 连接到谷歌云 SQL

javascript - 寻找更快或更好的方法来使用 jquery 选择 XML 节点的第 n 个子节点

node.js - 从azure存储表中检索超过1000条记录 - js