te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>node.js - How to make my script press enter in node js? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

node.js - How to make my script press enter in node js? - Stack Overflow

programmeradmin2浏览0评论

in my project I have a typescript class that is used to create a server-proxy. To do this I have to run a command which then in the terminal prompts me to input data such as username etc. I have created this function to start the server proxy and use stdin and stdout to read and write into the terminal. The majority of this works but there is prompt that fails which is listed: Listed Prompt

My Code to handle this prompt ( I want to select User credentials (NTLM) which is always the first option )

const process = exec(command);

process.stdout?.on('data', (data) => {
        const output = data.toString();

  if (output.includes('User credentials')) {
          process.stdin?.write('\n');
        }

});

I have also tried process.stdin?.write('1\n'); to make sure it selects the first one but this also doesn't work. The debug console is showing me that it selects the last option. Any help from this would be greatly appreciated.

in my project I have a typescript class that is used to create a server-proxy. To do this I have to run a command which then in the terminal prompts me to input data such as username etc. I have created this function to start the server proxy and use stdin and stdout to read and write into the terminal. The majority of this works but there is prompt that fails which is listed: Listed Prompt

My Code to handle this prompt ( I want to select User credentials (NTLM) which is always the first option )

const process = exec(command);

process.stdout?.on('data', (data) => {
        const output = data.toString();

  if (output.includes('User credentials')) {
          process.stdin?.write('\n');
        }

});

I have also tried process.stdin?.write('1\n'); to make sure it selects the first one but this also doesn't work. The debug console is showing me that it selects the last option. Any help from this would be greatly appreciated.

Share Improve this question asked Feb 17 at 17:48 john mahonjohn mahon 1 New contributor john mahon is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct. 1
  • Do you want to simulate an Enter press? If you want it, better rethink the idea. A correct approach would be some named function that you call both in your keyboard even handler and elsewhere. That “elsewhere” would be your simulation. If you goal is different, please clarify. Just in case, please read: XY Problem. – Sergey A Kryukov Commented Feb 17 at 23:52
Add a comment  | 

1 Answer 1

Reset to default 1

Replace the exec function with spawn. spawn provides a stream of output as it becomes available, unlike exec which buffers output. Accumulate the incoming output from the process's standard output into a single string.

Check the accumulated output string for the presence of the prompt text.

Introduce a short delay (e.g., using setTimeout) after detecting the prompt and before writing to the process's standard input. This delay accounts for the asynchronous nature of the interaction and gives the child process time to become ready to receive input.

Addresses the primary issues of timing and partial output by ensuring the entire prompt is received and a delay is introduced.


The setTimeout trick is crucial for dealing with the asynchronous nature of the interaction in most of these solutions.

发布评论

评论列表(0)

  1. 暂无评论