首页 > 解决方案 > uiop:launch-program 和 nodejs

问题描述

我正在尝试启动节点,编写 JS 并读回答案。为什么以下代码不起作用但挂在读取行?echo "console.log(1+1)" | node工作正常。

(defvar node-process (uiop:launch-program '("/usr/local/bin/node")
                                          :input :stream
                                          :output :stream
                                          :error-output :stream))

(defvar node-stream (make-two-way-stream (uiop:process-info-output node-process)
                                         (uiop:process-info-input node-process)))

(write-line "console.log(1+1)" node-stream)
(force-output node-stream)
(format t "~s~%" (read-line node-stream))

标签: common-lisp

解决方案


似乎只有在非交互模式下读取node后才发出输出,因此您需要在读取之前关闭输入流。EOF

(close (two-way-stream-input-stream node-stream)) 在之后force-output和之前添加 read-line


推荐阅读