Tag: read eval print loop

Node.js中的REPL驱动开发

在像Clojure和Scheme这样的语言中,我确实喜欢用REPL驱动的模式编写代码,当你在编辑器( Emacs中编写一段代码时,把它发送到你的REPL,然后回到编辑器,修复发现的问题并再次将代码发送到REPL。 我试图用Node.js来做同样的事情,如果我仅限于使用ES5语法,那么这种方法是有效的。 但是如果我使用像const , let和class这样的ES6特性,我预计会在重新评估我的声明时出错: > let foo = 1; > let foo = 2; TypeError: Identifier 'foo' has already been declared 是否有任何Node.js REPL参数,或可能修补REPLs ,甚至一些神奇的Emacs模式,当我重新评估我的代码时,将清除现有的声明? 这样我就可以用这种方式编写Node.js代码,而无需不断地考虑我正在使用的语法和/或需要在每次重新评估时手动重新启动REPL 。

与节点REPL中的应用程序代码进行交互

Rails之类的框架的乐趣之一就是能够在命令行上与模型进行交互。 作为node.js的新手,我常常发现自己将大量的应用程序代码粘贴到REPL中以便与对象一起玩。 这个不干净。 是否有更有经验的节点开发人员使用从node提示中访问其特定于应用程序的东西的魔力? 一个解决scheme是将整个应用程序或应用程序的一部分打包到require()模块中require() d? 我仍然生活在一个单一的大陆里,所以把所有东西都拿出来是不可避免的,有点令人生畏。 预先感谢您提供的任何有用的提示!

在节点的REPL中使用npm进行编程

我试图以编程方式使用npm模块来安装模块。 把下面的代码放到file.js中: var npm = require('npm'); npm.load({ save : true, loglevel : 'warn' }, function (err) { if (err) return callback(err); npm.commands.install(['async']); }); 工作得很好: $ node file.js async@0.2.9 node_modules/async [ [ 'async@0.2.9', 'node_modules/async', '', undefined, 'async@' ] ] 但是,在节点解释器中运行相同的代码会导致以下错误消息: $ node > var npm = require('npm'); undefined > npm.load({save : true,loglevel : 'warn'},function(err){if (err) return […]

调整节点REPL不要在asynchronouscallback上触发提示?

在使用Node REPL控制台时,我正在寻找一种asynchronous调用的方法,既不会locking控制台input,也不会在控制台提示符返回时重新启动。 我已经看到在REPL中处理asynchronous调用的一些解决scheme,在这里编写自己的自定义eval函数,您可以检查执行的代码的结果,以查看它是否为promise / async对象,只是在parsing后才返回。 不过,我想解决重复后台进程logging进度的问题。 理想情况下,我希望它的行为像Chrome Javascript控制台,如果您在控制台提示符下部分打印了命令,并且logging了asynchronous结果,那么您input的行将被移动一行,日志插在它上面。 所以,在function上,我想插入的逻辑,当调用console.log()被调用时,包含游标的行首先被清除,然后log()的内容写入,然后REPL提示符用户input到目前为止)被重新写入新的输出后面的行。 有没有办法钩入REPL对象来完成这个? 这是从REPL的输出stream的一些高级操纵(即只有在terminal上支持“擦除到行首”转义码)?

NodeJS REPL:为什么这个variables赋值失败?

有人能帮我理解下列行为吗? 我预料到,由于我可以在这个callback中设置全球f ,我也应该能够改变它。 我不明白在REPL中节点如何处理上下文和全局的问题,以便理解这一点,我非常感谢你的支持。 不使用useGlobal启动REPL $ cat test.js var repl = require('repl'); repl.start({useGlobal:false}); 现在尝试连续两次设置f : $ node test.js > f ReferenceError: f is not defined > setTimeout(function(){f=1;}, 0); > f 1 第一次工作…现在再试一次: > setTimeout(function(){f=2;}, 0); > f 1 咦! 第一次运行设置它; 第二个不影响它。 (设置useGlobal : true我得到了我期望的行为。)

给repl提示添加颜色(节点)

我发现在repl中为提示添加颜色确实有助于分离输出。 我通过使用NPM的粉笔来实现这一点,但是这在提示和光标之间增加了一堆空间。 var term = repl.start({ prompt: chalk.blue('goose> '), eval: function(cmd, context, filename, cb){ … } }); 提示符就像这样('|'是游标): goose> | 任何想法如何解决?

什么节点模块提供CLI提示?

我一直在寻找一个节点模块,为节点应用程序提供类似于REPL的CLI提示界面。 我所寻找的是询问者或提示 者与指挥官之间的混合。 Node提供了一个内置的REPL模块 ,但是这只是暴露了你的应用程序的原始JavaScript。 我想为应用程序构build一个虚拟接口。 例如,假设你运行node server.js ,你会得到一个提示: server:~$ 这将在您自己的虚拟环境中performance得像一个基本的unix提示符。 按enter键: server:~$ server:~$ 或者help : server:~$ help Commands: debug [setting] Enables or disables debugging. show stats Displays live stats for your web server. server:~$ 你可以执行自定义命令: server:~$ debug on -v 7 Debugging turned on with a verbosity of 7 … live logging … 任何想法NPM模块处理这个? 9个月后更新 […]

为什么:3.toString()会导致Node.JS REPLinput新的作用域?

当我input一个文字整数后跟着.toString()进入节点时,它通过用…做出响应来进入一个新的范围。 例子 > 3.toString() … > 'foo:' + 3.toString() … > 'foo:' + 3.toString() + ':bar' … 其他types似乎工作正常 > true.toString() 'true' 即使这个作品! > 10.50.toString() '10.5' 解决方法 括号中的文字整数工作: > (3).toString() '3' 有没有这个原因,或者你认为这是一个错误?

如何从CoffeeScript脚本中启动CoffeeScript repl?

如果我做 repl = require 'repl' repl.start {useGlobal: true} 它启动一个节点repl。 我如何开始一个CoffeeScript repl呢? 谢谢

Node.js REPL有趣的行为与自定义eval函数

看来,Node.js(版本v0.10.13)返回(和\n)之间的命令,这是一个最小的例子: require('repl').start({ 'eval': function (cmd, context, filename, callback) { callback(null, cmd); } }); 行为如下: $ node repl.js > asd '(asd\n)' > 这是为什么? 如果这个function被logging,那么我无法find它。 此外,如果这是预期的行为,有没有比做cmd = cmd.slice(1, -2);更好的解决schemecmd = cmd.slice(1, -2); ?