![](/img/trans.png)
[英]Catch c++ native addon cout/console messages in electron.js or node.js app
[英]C++ node.js module. cout not working?
嗨,我是 C++ 的菜鳥,試圖修改現有的本機節點模塊。
我正在嘗試在模塊內添加 couts 以打印我認為對我有用的信息。
NAN_METHOD(Context2d::SetFillRule){
Context2d *context = Nan::ObjectWrap::Unwrap<Context2d>(info.This());
cairo_t *ctx = context->context();
String::Utf8Value str(info[0]);
cout << "set method called";
...
}
以前的方法有效,但從未顯示 cout。 它在 node-gyp 構建過程中丟失/顯示了嗎? 我做錯了什么嗎? 有辦法實現嗎?
我正在嘗試學習 N-API 來為 nodejs 項目制作插件,但遇到了同樣的問題。 添加#include <iostream>
使std::cout
可用於我的代碼。 當我像對任何 nodejs 項目一樣通過調用node path_to_file.js
來運行我的代碼時,它成功地將我的數據打印到控制台。 我知道您正在使用 NAN 並且可能很久以前就已經克服了這個問題,但是我覺得給出這個答案很重要,因為它出現在我的搜索結果中並且對於像我這樣的初學者來說沒有一個好的答案。
我建議改為將它寫入日志文件(重定向 std::cout 很痛苦)。
std::ofstream logFile("logfile.txt");
logFile << "set method called";
std::cout <<
在 Node.js C++ 附加組件中通常應該打印到控制台( node
進程的stdout
)。
如果它沒有出現,則可能是由於 memory(實例壽命)管理不善導致的分段錯誤。 它默默地殺死了整個node
進程。
cout << "some text"
僅在您直接從命令行啟動二進制文件時才有效。 我認為情況並非如此,因為您似乎在節點內部使用它。 所以你應該從節點庫中找到一些日志 output 方法。
如果它在 windows 中,您可以嘗試制作另一個控制台 window。然后將您的上下文綁定到該 window 並將打印重定向到那里。
或寫入文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.