common-lisp - 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))
解决方案
似乎只有在非交互模式下读取node
后才发出输出,因此您需要在读取之前关闭输入流。EOF
(close (two-way-stream-input-stream node-stream))
在之后force-output
和之前添加
read-line
。
推荐阅读
- javascript - “在网页上运行 JavaScript”的 iOS 12 快捷方式设置问题
- angularjs - 内容安全策略:页面的设置阻止了自身资源的加载(“default-src”)
- azure-devops - Azure Devops 发布管道无法采用最新的 C# 版本
- javascript - 使用 vanilla JS 突出显示活动选项卡
- jquery-ui - 使用 jQuery-ui 自动完成显示加载 gif
- javascript - 如何在three.js中将自定义字体渲染的大小设置为屏幕外画布?
- android - Android Firebase - 如何获取子节点数据
- c++ - 没有 layoutChanged,QTreeView 新行不可见
- php - preg_match_all 使用 $row 计算匹配词
- android - 不适用于包名称和 firebase