javascript - 在终端中的js文件之间传递变量...

标签 javascript node.js terminal

首先,是的,我知道这个问题之前已经被问过,但我仍然不知道如何让它发挥作用。我相信问题是,我在 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/

相关文章:

perl - Perl-由打印中未初始化的值引起的错误

c++ - 在 Linux 上的终端安装 C++ 编译器

javascript - 非提交按钮上的文本验证必需属性?

javascript - 无法将 .onClick 方法添加到子组件中的对象

javascript - 如何递归替换对象中的键名?

shell - head 命令在 MAC OSX 上跳过文件的最后几行

javascript - 如何在 jQuery 中迭代 JSON 的嵌套数组?

node.js - Nodejs 安全 Cook 和 HTTPOnly 在代理服务器后面

javascript - 在 Node.js + websocket 服务器上循环访问游戏对象?

javascript - 在 For 语句中使用 Query 时如何解决响应问题