首先,是的,我知道这个问题之前已经被问过,但我仍然不知道如何让它发挥作用。我相信问题是,我在 Mac 终端上通过 node.js 单独运行文件,有点像应用程序。
这是交易。我有一个文件 bitt1.js,其中包含 var mid = 293.03;
。
在我的另一个文件 otherFile.js 中,我有一个 if, else 语句,具体取决于变量 mid
(位于 bitt1.js 中):
if (mid <= 290) {
trade = true;
} else {
trade = false; }
问题是,在终端中,我首先运行 bitt1.js,然后运行 otherFile.js。这使得我无法从 bitt1.js 接收 mid 变量,并且它显示为未定义。
如何解决这个问题?我只发现在 html 等中使用的东西,其中变量始终“可用”。
我是 JS 的新手,所以我说的一些内容可能是不正确的......而且我也可能只是愚蠢,答案是显而易见的,但请帮助我......我考虑过创建一个 JSON 文件并使用其他两个文件从中写入/读取数据,但我觉得有更好的方法......
谢谢!
最佳答案
如果您不想修改变量的值,开发者 NodeJS 的代码就可以工作 - 如果您只想共享变量的初始值,它就可以完美工作。
但是,如果您打算在 bitt1.js
运行时执行期间改变 mid
的值并希望使用那个值,也许您可以使用 Unix 管道将其值插入到 bitt1.js
的标准输入中。
例如
// bitt1.js
var mid = 299;
console.log("<mid>%d</mid>", mid); // this is piped to stdin
// otherFile.js
var stdin = process.openStdin();
var data = "";
stdin.on('data', function(chunk) {
data += chunk;
});
stdin.on('end', function() {
data.match(/<mid>([\s\S]+)<\/mid>/i);
var mid = +data.match[1];
console.log(mid);
});
然后运行:node bitt1.js | Node otherFile.js
将从 otherFile.js 中打印 299
。
不过,这是一个粗略的解决方案:它应该需要对匹配表达式进行一些未定义的检查,当然管道不允许您将任何内容直接打印到 bitt1.js
文件中的控制台 -您必须重新打印 otherFile.js 中的所有内容,这会导致重复的代码。
但这可能是一个适合您的解决方案,一切都取决于您的要求!希望这会有所帮助。
关于javascript - 在终端中的js文件之间传递变量...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47107886/