我是Node.js的新手。我搜索过论坛但找不到类似的问题。这是我遇到的问题。以下代码运行正常。
process.stdout.write("hello world!\n");
但是以下代码:
var myprint = process.stdout.write;
myprint("hello world");
将生成以下错误:
TypeError: Cannot read property 'defaultEncoding' of undefined
有什么建议吗?非常感谢。
答案 0 :(得分:2)
write
函数正在尝试访问this
变量上的变量,当您调用process.stdout
时,该变量未设置为myprint
,与调用{{ 1}}。
请注意
process.stdout.write
将按预期工作。
答案 1 :(得分:2)
可能需要使用正确的对象引用调用var out = process.stdout;
out.print('wow\n');
方法,以便write()
方法知道它正在写入哪个流。有多种方法可以解决这个问题。这是一种方式:
write()
有关详细信息,请参阅.bind()
on MDN。
以备参考时使用:
var myprint = process.stdout.write.bind(process.stdout);
myprint("hello world");
var myprint = process.stdout.write;
仅包含对myprint
方法的引用,然后在没有对象引用的情况下调用该方法。这意味着write
方法中的this
指针不会像调用write()
时那样指向stdout流。如果某个方法需要它的实例数据(大多数方法都这样做),那么就会产生问题。你可以"绑定"使用process.stdout.write()
的对象引用新的临时函数,允许您将其分配给另一个变量,然后像您尝试的那样直接使用它。