了解Node.js模块:多个需要返回相同的对象?

我有一个关于模块caching的node.js文档的问题: 模块在第一次加载后被caching。 这意味着(除其他外)每个调用require('foo')将返回完全相同的对象 ,如果它将parsing为相同的文件。 多次调用require('foo') 可能不会导致模块代码被多次执行。 这是一个重要的function。 有了它,“部分完成”的对象可以被返回,从而允许传递依赖被加载,即使它们会导致循环。 may是什么意思? 我想知道如果require将始终返回相同的对象。 因此,如果我需要app.js的模块A并更改app.js (需要返回的那个)中的exports对象,然后在app.js中需要模块B本身需要模块A ,那么我是否总能得到该对象的修改版本,还是新的? // app.js var a = require('./a'); ab = 2; console.log(ab); //2 var b = require('./b'); console.log(bb); //2 // a.js exports.a = 1; // b.js module.exports = require('./a');

用Mochatestingjavascript – 我如何使用console.log来debuggingtesting?

我正在使用JavaScripttesting运行“Mocha”。 我有一个失败的testing,所以我会debugging它使用console.log 。 但是当testing运行时,没有输出(仅来自Mocha的testing结果)。 摩卡似乎已经捕获并压制了我的console.log输出! 我怎样才能让摩卡显示我的输出? (在testing失败)? 编辑: 巨大的歉意! – console.log在testing过程中不起作用! 我一定是期待它压制输出,我没有正确地检查我自己的代码。 感谢您的回应。 所以…说的话…也许它实际上会是很好的压制输出testing通过? 嗯… 在一个相关的说明:我想使用console.log因为我有很多麻烦试图让Eclipsedebugging器连接到node.js. 我是唯一一个发现这个棘手的人吗? 你们如何debuggingnode.js? 用debugging器,还是用console.log语句?

在EJS模板(使用ExpressJS)中检查variables的存在的正确方法是什么?

在EJS的github页面上,有一个简单的例子: https : //github.com/visionmedia/ejs 例 <% if (user) { %> <h2><%= user.name %></h2> <% } %> 这似乎是检查名为用户的variables的存在,如果它存在,做一些东西。 杜,对不对? 我的问题是,如果用户variables不存在,为什么世界上会抛出一个ReferenceError? 这使得上面的例子无用。 什么是检查variables存在的适当方法? 我希望使用try / catch机制,并抓住ReferenceError? ReferenceError: user is not defined at IncomingMessage.anonymous (eval at <anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:140:12)) at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:142:15) at Object.render (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:177:13) at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22) at Object.<anonymous> (/Users/me/Dropbox/Projects/myproject/server.js:188:9) at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21) at pass (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10) at /usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:152:27 […]

Nodejs发送文件作为回应

Expressjs框架有一个sendfile()方法。 我怎样才能做到这一点,而不使用整个框架。 我正在使用node-native-zip来创build一个存档,我想将其发送给用户。

使用npm卸载时自动从package.json中删除依赖项

在npm init我可以使用以下方法在我的package.json中添加依赖项: npm install package –save 并说,我想uninstall包,我这样做: npm uninstall package 但我希望我的package.json也可以相应地更新,而不必手动转到该文件并删除该行。 从npm文档它说: 这是严格的附加,所以它不会从你的package.json中删除选项,没有一个很好的理由。 所以,我只是想知道这是否可能。

node.js,错误:找不到模块'express'

我是node.js的新手,尝试学习快速构build我的第一个Web应用程序。 被困在我的第一个示例代码。 需要一些帮助,让它运行。 在我发布这个问题之前,我没有search堆栈溢出,发现了一些类似的问题,但仍然无法解决它。 错误:找不到模块'express' 我使用的是Mac OS 10.8.2。 我使用nvm安装了node.js。 node.js:0.8.20 path to node:/Users/feelexit/nvm/v0.8.20/bin/node path to express:/ Users / feelexit / nvm / node_modules / express 这里是我的示例代码:这个文件位于: /Users/feelexit/WebstormProjects/learnnode/node_modules/index.js var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('welcome to express'); }); app.listen(3000); 当我尝试运行这个文件“node index.js” 我收到以下错误消息,请帮我解决它。 谢谢 。 Error: Cannot find module 'express' at Function.Module._resolveFilename […]

永远存储console.log输出的地方在哪里?

我永远安装并使用它,发现它很有趣。 但是我意识到日志被放置在别的地方。 有什么build议吗?

如何用Mongoose删除数据库?

我正在准备Node.js和Mongoose中的数据库创build脚本。 我如何检查数据库是否已经存在,如果是的话,使用Mongoose删除(删除)它? 我找不到用mongoose把它放下的办法。

socket.io客户端库在哪里?

据我所见,如果node.js没有被用作web服务器,我们不知道在哪里定位socket.io的客户端脚本。 我find了一个客户端文件的完整目录,但是我需要它们的组合版本(比如在使用node.js web服务器时提供服务)。 有任何想法吗?

部署生产Node.js服务器

我已经写了一个Node.js应用程序,我正在寻找它在我们的一台生产机器上运行。 这似乎是一个相当普遍的要求,但我找不到一个适当的解决scheme。 是否没有build立生产Node.js应用程序的解决scheme? 该应用程序很简单(<100 LOC),但需要非常高效,可靠,可连续运行多年,无需重新启动。 它将在一个大型网站上运行,每秒钟几十个连接。 (该应用程序不被用作networking服务器,它只有一个JSON API) 以下是我考虑的方法,但我仍然不确定: 使用框架(如Express) 因为应用程序需要高性能,而且非常简单,所以以框架的forms添加膨胀是我想要避免的。 用nohup启动服务器 这里的主要问题是exception处理,我们(显然)不希望整个服务器因为exception而崩溃。 据我所知,在一个try {} catch {}循环中包装整个应用程序将无济于事,因为在解释exception之后,Javascript解释器处于不可预知的状态。 那是对的吗? 使用像永远的东西 我已经在我们的FreeBSD机器上安装了Forever,这是非常麻烦的。 它最终产生了无法从Forever中杀死的无尽进程。 我必须运行kill -9来让我的机器重新运行,并且我不觉得在Forever上运行一个生产应用程序太有自信了。 也似乎Upstart(类似的工具,但更通用)不会在FreeBSD上运行。 托pipe解决scheme(如Heroku,Rackspace,Amazon EC2等) 这可能是最简单的解决scheme,但我们已经有一个严重的硬件,我们的networking服务器的其余部分。 出于财务考虑,这是没有道理的。 一定有一些确定的解决scheme呢? 我错过了什么吗?