Tag: 命令行界面

NodeJS执行'su'命令并提示input密码

在命令行应用程序上工作。 我需要允许用户通过su切换到root 我试过了 var spawn = require( 'child_process' ).spawn, ls = spawn('su'); ls.stdout.on( 'data', ( data ) => { console.log( "stdout: ${data}" ); }); ls.stderr.on( 'data', ( data ) => { console.log( "stderr: ${data}" ); }); ls.on( 'close', ( code ) => { console.log( "child process exited with code ${code}" ); }); 并同步: var fs […]

commander.js:通过action()传递isDefault选项

根据commander.js自述,我可以指定默认的命令: var program = …; program … .command('list', 'list packages installed', {isDefault: true}) .parse(process.argv); 在我的应用程序中,我使用.command()而不使用描述参数,用于使用.action() 。 我试着传递第二个参数为null ,第三个选项为isDefault:true 。 但它似乎并没有工作: program.command('help', null, {isDefault:true}) .description('display help information.') .action(function(){ program.outputHelp(); }); 如何传递isDefault:true的命令与.action() ?

怎么了我的节点命令?

我已经在Ubuntu 14.04上安装了node.js。 几个月前我安装了nvm,事情一直很顺利。 几天前,当我尝试运行节点脚本时,我得到以下结果: me@here~$: node he program 'node' can be found in the following packages: * node * nodejs-legacy Try: sudo apt-get install <selected package> 如果我然后使用nvm来指定我想要使用节点( nvm use node ),那么事情会再次运行 – 直到我closures我的terminal或开始一个新的会话。 很烦人。 当然,如果我按照build议的行动做 sudo apt-get install node 安装的不是node.js,而是其他一些不相关的软件包。 题 我可以做什么,以便在任何terminal会话上运行nodeparsing为nvm以前设置? 更新 从其中一个评论链接到另一个问题,我是这样解决的: “我还想在我的.bashrc底部添加一行,如: nvm use stable > /dev/null这将自动使用您安装的最新版本。”

在Node.JS中编写CLI时,你是否总是回退到向后兼容的代码?

我更喜欢ES6的语法,并且已经习惯了语法,但是,在为公共消费(甚至是非JavaScript的开发人员)开发node.js中的CLI时,应该总是回退到与真正的旧版本兼容的代码的Node.JS,说0.6,因为我不能确定用户在他的系统上安装了什么Node.JS版本。 确保与不一定只由熟悉Node.JS的用户组成的用户具有最大的兼容性的一个好的和/或常见的做法是什么?

在另一个NodeJS进程中执行一个JS文件(包含日志等)

这是我的问题,我想创build一个自动运行testing的CLI。 没有CLI,我可以使用node命令完美运行一切: node test.js 基本上,我想和之前的命令完全一样,所以我search了一个这样的技术。 我find了这个: #!/usr/bin/env node 'use strict'; const options = process.argv; const { execFile } = require('child_process'); const child = execFile('node', ['../dist/test.js'], (error, stdout, stderr) => { if (error) { throw error; } console.log(stdout); }); 这个方法对我不起作用,因为在test.js文件中,我使用的是ora包。 而且因为这个软件包正在制作实时animation,所以不会出现在stdout 。 有没有任何方式实时执行(没有子test.js )我的test.js使用节点? 我对其他方法是开放的,但是我想在NPM上发布CLI,所以请记住它必须在JavaScript中。 你可以在GitHub上find我所说的每个文件。 通常情况下,你不需要这个链接,但是如果你需要仔细观察,我会把它给你。

节点的process.stdin可读streamlogging在可读事件侦听器callback中读取时为空

在不使用data事件的情况下,我希望此代码logging每个密钥的unicode引用,因为我将其按下。 我不明白为什么我每次都得到Null 。 每当我按下我的键盘上的一个键,我会触发一个可读的事件process.stdin运行一个callback,它允许我从这个可读的stream中读取数据。 那么为什么它没有从我的按键中保存任何数据呢? // nodo.js function nodo() { var stdin = process.stdin; var stdout = process.stdout; if (stdin.isTTY) { stdin.setRawMode(true); stdin.setEncoding('utf8'); stdin.resume(); stdout.write('\u000A>Bienvenido\u000A'); } else { process.exit(); } stdin.on('readable', function(){ var input = stdin.read(); console.log(input); }); } nodo(); 我感谢你的关注。

节点CLIunit testing

我有一个节点模块,我正在努力,我想写它的unit testing,但是我很困惑如何通过testing套件将参数(CLI所需)传递给节点。 让我们假设(为了简洁)模块名称是J,所以我会这样称呼它… $ j –file test.js –file test2.js 当我正在编写testing套件时,如何重新创build这些文件?

我怎样才能作为守护进程运行grunt?

我正在运行一个打包的nodejs web服务器,它允许读取epub文件( Readium-JS ),并使用grunt命令启动它。 但是,如果我在我的VPS上运行这个服务器,服务器就会在我的terminal连接结束后立即死亡。 我如何以守护进程的方式运行这个任务? 我已经看过像grunt-forever和grunt-daemon这样的选项,但Gruntfile使用load-grunt-config编写的方式正在混淆我的想法,我不能拼凑在一起如何隔离服务器代码。

编译NodeJS命令行应用程序

我已经构build了一个使用NodeJS在命令行上运行的简单Web刮板。 我正在寻找一种方法来生成一个单独的,自包含的文件/可执行文件,其他人可以单击并运行。 该应用程序正在使用一些外部模块,如cheerio和fs-extra,以及其他一些。 编译/打包这样的命令行应用程序有哪些select,防止用户在他们的机器上安装节点? 非常感谢

Cordova Apache错误的模块path

我的问题 我正在学习与cordova阿帕奇(以前Phonegap?)混合应用程序?我遵循他们推荐我们的网站的步骤: https://cordova.apache.org/docs/en/latest/guide/cli/index.html 我成功安装了nodeJS(如果我执行命令节点–version,它将返回它的版本) 但是,当我尝试安装cordova时,一切似乎工作,但不是CLI。 所以:我猜CLIconfiguration不正确,但我不确定。 任何人都可以帮助我吗? 笔记: 用于安装cordova(全局)的命令: npm install -g cordova 用于检查它是否正确安装并可从命令行访问的命令(给定错误): cordova –version module.js:340 throw err; ^ Error: Cannot find module 'c:\Program Files\nodejs\node_modules\cordova\bin\cordova' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:289:25) at Function.Module.runMain (module.js:457:10) at startup (node.js:138:18) at node.js:974:3 我发现错误中的path不存在: c:\Program Files\nodejs\node_modules\cordova\bin\cordova 正确的道路必须是: C:\Users\Username\AppData\Roaming\npm\node_modules\cordova\bin\cordova 我在我的全局系统环境中configuration了这个path: C:\Users\Username\AppData\Roaming\npm 我注意到这个文件(需要从CLI调用我猜) #!/bin/sh basedir=`dirname "$0"` case `uname` in *CYGWIN*) […]