NodeJS回调成功时不打印输出

Posted

技术标签:

【中文标题】NodeJS回调成功时不打印输出【英文标题】:NodeJS callback not printing output when it is success 【发布时间】:2020-02-01 08:45:50 【问题描述】:

我编写了以下使用 nodejs 回调的代码。 当没有 telnet 连接时,它会正确打印 error

但是,当 telnet 成功执行时,它不会打印Success!

当我手动执行telnet linux003 4102 时,我看到一个空白屏幕。黑屏表示telnet连接成功

var abc = require("expect-telnet");
abc("linux003:4102", 
function(err) 
  if (err)  
    console.error(err);
  
  else 
    console.log('Success!');
  
);

【问题讨论】:

当你看到一个空白屏幕意味着它没有连接??? 黑屏表示已连接 【参考方案1】:

看起来您可以利用期望步骤对象中的out property:

outfunction:输出函数,接收上一步以来的输出。

const et = require("expect-telnet");

et("linux003:4102", [
  
    expect: "some expected text", 
    out(output) 
      console.log("Success");
    , 
    send: "exit\r"

], (err) => 
  if (err) console.error(err);
);

话虽如此,这个包不再被维护(见here),作者推荐另一个看起来可以让你这样做的包here)。

【讨论】:

它仍然没有显示Success 消息。我正在尝试使用telnet-client。你能帮助解决那里面临的错误吗? ***.com/questions/58212553/…【参考方案2】:

根据expect-telnet,只有在出现错误时才会调用回调。 所以,在下面

var abc = require("expect-telnet");
abc("linux003:4102", 
function(err) 
  if (err)  
    console.error(err);
  
  else 
    console.log('Success!');
  
);

只有在出现错误时才会调用回调。所以Success!不会被打印出来。

【讨论】:

【参考方案3】:

根据expect-telnet doc,只有在发生错误时才会调用回调。

【讨论】:

如何打印Success!?我需要在我的代码中进行哪些更改才能执行此操作 @meallhour try "telnet-client" 它返回承诺你也可以使用 async awit 它会抛出错误或成功npmjs.com/package/telnet-client 我正在尝试使用telnet-client。你能帮助解决那里面临的错误吗? ***.com/questions/58212553/…

以上是关于NodeJS回调成功时不打印输出的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NodeJS 中成功解析 FFMpeg 的输出

『Go基础』第8节 格式化输出

node.js里的forEach也是异步的吗

回调函数不打印,除非由 Jupyter 运行

NodeJS:在回调函数中追加文件

了解NodeJS中的回调函数