【问题标题】:pass variable between js files... in terminal在 js 文件之间传递变量...在终端中
【发布时间】:2017-11-04 05:49:56
【问题描述】:

首先,是的,我知道以前有人问过这个问题,但我仍然无法弄清楚如何让它发挥作用。我相信问题是,我在我的 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 文件并使用其他两个文件从中写入/读取数据,但我觉得有更好的方法......

谢谢!

【问题讨论】:

  • 为什么不先实施幼稚的解决方案呢?从 JSON 文件写入和读取是一个完全有效的解决方案(除非您有多个程序试图同时编辑它)。为什么你不想以这种方式实现它?
  • 我可以我只是在这个概念上有点挣扎,因为我是新手,我想在进入之前看看是否有另一个修复,你们都帮了我!不过,为了更好的衡量标准,我也会致力于 JSON 的实现。再次感谢! @乔纳森布鲁克斯
  • 如果我要将信息写入 json,我会执行 fs.appendFile 之类的操作并创建一个数组吗?你会推荐什么?
  • fs.appendFile 应该可以正常工作!只需确保首先使用 JSON.stringify 将 JSON 对象转换为字符串

标签: javascript node.js terminal


【解决方案1】:

如果您不想修改变量的值,开发者 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 中,这会导致重复代码。

但这可能是一个适合您的解决方案,一切都取决于您的要求!希望这会有所帮助。

【讨论】:

  • 聪明的解决方案。
【解决方案2】:

node.js 允许导入和导出。

说 bitt1.js 有:

var mid = 299

console.log(mid)

// Here is where you export the desired value
//export default mid
module.exports.mid = mid

然后,在你的 otherFile.js 中

// you import the value from bitt1.js
var mid = require('./bitt1')

console.log(mid) //Outputs 299

就是这样。

编辑:更新答案

【讨论】:

  • 老实说,在编码更多之后,我经常使用这个哈哈。非常感谢!
  • 不要害怕接受它作为我的朋友的答案。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2013-08-17
  • 1970-01-01
相关资源
最近更新 更多