Tag: read eval print loop

nodejs到nodejs repl / swank像与asynchronous调用通信?

我正在处理我自己的内部cmdline gui来控制我的大型远程节点应用程序。 它使用terminalgui,像这样https://github.com/yaronn/blessed-contrib#rolling-log与REPL 但我不想为这个“pipe理客户端应用” – >“大应用”通信实现一个内部API。 我想有一个直接访问正在运行的应用程序的内部上下文,以便我可以有一个开放式,asynchronous并行通信和代码执行,而不是调用特定的API调用。 (我可能想直接打补丁到日志stream中,也许在服务器端过滤日志stream(对于高stream量日志),并行执行简单的命令,查询用户模型等)。 我知道我可以pipe一个节点repl到tcp( https://nodejs.org/api/repl.html#repl_repl_features ),但是这并没有给我一个方法来调用并行asynchronous函数和区分响应。 我知道swank-js,这并不是真正想要做的,但它可能适合。 我正在研究它。 如果这不起作用,我会使用我自己的通用查询/回复协议,发送和接收JS代码,通过repl或eval在服务器上调用这个,并以某种方式将callback/承诺包装到查询答复中。 有没有人在我面前做过这样的事情? 有谁知道类似的项目? 好像有人想到了两个远程应用程序之间的这种“上下文桥梁”。 任何build议? 一般来说,你对此有何看法?

我如何开始超级repl

我在Win 8上使用node js v0.12.4 ,并使用以下命令安装了ultra-repl : npm install ultra-repl 我该如何开始呢? 我试着开始使用: node ultra-repl.js 但我得到的错误: d:\Development\Private\WorkspaceServer\messaging\node_modules\ultra-repl\lib\ScopedModule.js:81 if (NativeModule.exists(request)) { ^ TypeError: Cannot read property 'exists' of undefined at Function._resolveFilename (d:\Development\Private\WorkspaceServer\messaging\node_modules\ultra-repl\lib\ScopedModule.js:81:21) at Function._load (d:\Development\Private\WorkspaceServer\messaging\node_modules\ultra-repl\lib\ScopedModule.js:102:33) at Object.<anonymous> (d:\Development\Private\WorkspaceServer\messaging\node_modules\ultra-repl\index.js:3:30) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> […]

如何在匿名函数中应用node.js REPL?

不幸的是我对node.js没有任何知识,因为直到现在我用Ruby和它的REPL叫做Pry。 我发现node.js也有这样的包,可以用“npm”包pipe理器来安装。 我这样做的理由是node.js包“facebook-chat-api”,这对于以编程方式发送Facebook聊天消息很有用,据我所知,这不能在Ruby(或其他语言)中实现, 。 我安装了在这里find的包https://www.npmjs.com/package/facebook-chat-api,并尝试成功,帮助的例子(face.js和我已经运行与“node face.js”) : var login = require("facebook-chat-api"); login({email: "XXX.XXX@XXX.XX", password: "XXXXXX"}, function(err,api) { if(err) return console.error(err); var yourID = "000000000000000"; var msg = {body: "Hey! My first programmatic message!"}; api.sendMessage(msg, yourID); }); 在为用户设置了正确的ID之后,发送了没有缺陷的消息。 然后,我也安装了一个REPL,名为“locus”( https://www.npmjs.com/package/locus ),因为我想在发送消息之后停止node.js脚本,并且发送另一个REPL命令行。 所以我的剧本成为以下内容: var login = require("facebook-chat-api"); var locus = require('locus') login({email: "XXX.XXX@XXX.XX", password: "XXXXXX"}, function(err,api) { […]

为什么babel-node在REPL中不支持模块加载?

已经确定, babel-node不支持REPL中的模块加载 。 在文档中它只是这样说的: 由于技术限制,babel-node REPL中不完全支持ES6风格的模块加载。 我的问题是为什么? 如果我写了一个名为t.js的小脚本,并用babel-node运行,那么导入语句就可以正常工作。 从标准中读取源代码一行的REPL和从文件中读取源代码的babel-node t.js什么babel-node t.js ? 有没有人知道是否有计划在未来支持import ,因为缺乏import杀死REPL?

如何在全球范围内安装npm模块?

我已经在全局安装了some-npm-module ,但是当我require()时候出现错误: $ node > const module = require('some-npm-module') > import module from 'some-npm-module' Error: Cannot find module 'some-npm-module' at Function.Module._resolveFilename (module.js:470:15) at Function.Module._load (module.js:418:25) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at repl:1:12 at realRunInThisContextScript (vm.js:22:35) at sigintHandlersWrap (vm.js:98:12) at ContextifyScript.Script.runInThisContext (vm.js:24:12) at REPLServer.defaultEval (repl.js:313:29) at bound (domain.js:280:14) 核心节点模块似乎没有问题的工作。 以下不会产生错误: const http = require('http'); 为什么会发生? […]

命令行JavaScript偶尔不会打印值

虽然我写javascript,我不确定其行为,我喜欢通过节点的REPLshell运行它,以validation它的工作原理。 当我testing一个缩小的封闭函数时,我注意到了一些奇怪的行为: 偶尔它不会输出任何值 。 它不会“可靠地”发生,但是当我尝试使用2个不同的expression式时,我发现我可以最经常地发生它。 问: 为什么发生这种情况? 这是我以前从未遇到过的常见事件吗? 以下是我在示例中使用的代码段: var testObj = { val1: false, val2: false }; !function(){for(var a in testObj)if(testObj.hasOwnProperty(a)&&!a)return!0}(); (function(){for(var a in testObj){if(testObj.hasOwnProperty(a)&&!a)return !0;}return !1;})(); 笔记: 我已经看到这两个函数产生这个错误。 我已经看到这两个函数在第一次评估之前做了这些,然后我在两者之间交替。 我还没有用其他函数testing过这个function:只有通过对象属性search的东西。 我对函数的function并不感兴趣,除非是什么导致节点“错过”输出 节点v6.10.0 Windows 10 x64

NodeJSsubprocess:写任意时间的stdin

我正在尝试make和c REPL,所以我需要与stdin交互多less次c代码所需要的。 目前有这样的代码(只是一次) const spawn = require('child_process').spawn; const gcc = spawn('gcc', ['-Wall', 'main.c', '-o', 'main', '-lm']); gcc.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); gcc.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); gcc.on('close', (code) => { console.log(`child process exited with code ${code}`); const child = spawn('./main') child.stdin.setEncoding('utf-8'); child.stdout.pipe(process.stdout) child.stdin.write("5\n"); child.stdin.end(); }); 任何线索?

有没有办法在节点js REPL中启用分页

当我在节点js REPL中有很长的输出时,我希望看到分页。 那可能吗,怎么样?

我怎样才能连接到一个正在运行的节点程序与我的repl

我正在使用Bodil Stokkes节点repl https://github.com/bodil/cljs-noderepl 。 开始是非常容易的。 正如文档中所述。 现在我想连接我的正在运行的节点程序到repl。 但我不知道如何做到这一点。 有谁能给我一步一步的指示。 我想要做的是 node out/main.js =>启动我的节点进程 lein trampoline noderepl =>这应该以某种方式连接到main.js中的进程 可选的,如果我可以从node-repl中启动/访问我的主程序,我会很高兴。

节点repl与asynchronous等待

我想添加对asynchronous/等待到节点repl的支持 在这个问题之后: https : //github.com/nodejs/node/issues/8382 我试图使用这一个https://github.com/paulserraino/babel-repl但它是缺lessasynchronous等待suppport 我想用这个片段 const awaitMatcher = /^(?:\s*(?:(?:let|var|const)\s)?\s*([^=]+)=\s*|^\s*)(await\s[\s\S]*)/; const asyncWrapper = (code, binder) => { let assign = binder ? `root.${binder} = ` : ''; return `(function(){ async function _wrap() { return ${assign}${code} } return _wrap();})()`; }; // match & transform const match = input.match(awaitMatcher); if(match) { input = `${asyncWrapper(match[2], match[1])}`; } […]