在打字稿中书写NPM模块

我正在开发我的第一个NPM模块。 之前我曾经使用过打字稿,而且很多问题是很多模块没有可用的定义文件。 所以我认为在打字稿中写我的模块是一个好主意。 但是,我找不到任何有关如何做到这一点的最佳方法。 我发现这个相关的问题“ 我可以用coffeescript编写npm包吗? ”,其中人们build议只发布javascript文件。 但是与coffeescript文件相反,打字稿文件在打字稿应用程序中使用时可能会非常有用。 我应该在发布NPM模块时包含Typescript文件,还是应该只发布JavaScript文件并将生成的.d.ts文件提供给DefinitelyTyped?

一旦你完成,正确closuresmongoose的连接

我在一个脚本中使用mongoose,它并不意味着连续运行,而且我面对的似乎是一个非常简单的问题,但我找不到答案。 简单地说,一旦我打电话给任何发送请求mongodb的函数,我的nodejs实例永远不会停止,我必须用Ctrl + c或Program.exit()手动杀死它。 代码大致如下所示: var mongoose = require('mongoose'); // if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ? mongoose.connect('mongodb://localhost:27017/somedb'); // define some models // if I include this line for example, node […]

使用发行版nodejs包(Ubuntu)将NPM安装到主目录中

我想使用分发Node.js包(或更多最新版本的chris-lea ppa ),但将NPM安装到我的主目录。 这可能看起来很挑剔,但是对于使用polyglot / github的开发人员来说,在Linux下设置语言运行时/库环境是非常习惯的方式:运行时的distro包,每个用户环境中的第三方库(参见virtualenv,RVM – RVM如果你愿意,也会为你build立Ruby)。 如果有必要,我将在本地构build节点,但是它是一个PITA,因为Node正在成为大量项目的附带开发需求。 有关将node + npm安装到主目录的说明 另一种安装node + npm到家的方法 第二个链接似乎可能与分发nodejs包,但似乎很粗略。 更新 这个粘贴总结了上面的第二个链接,但对我来说不起作用(至less在安装过程中,npm忽略〜/ .npmrc)。

Nodejs – redirecturl

如何获取node.js服务器在用户input无效url时将用户redirect到404.html页面? 我做了一些search,它看起来像大多数结果是快速,但我想写我的服务器在纯node.js。

允许CORS REST请求到Heroku上的Express / Node.js应用程序

我在node.js的快速框架上编写了一个REST API,这个框架适用于Chrome中js控制台的请求和URL栏等等。我现在试图让它适用于来自另一个应用程序的请求域(CORS)。 第一个由javascript前端自动创build的请求是/ api / search?uri =,并且在“预检”选项请求中显示为失败。 在我的快速应用程序中,我添加CORS标题,使用: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); // intercept OPTIONS method if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }; 和: app.configure(function () { app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(allowCrossDomain); app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true […]

一个单元如何testingExpress的路线?

我正在学习Node.js,并且一直在玩Express 。 真的很喜欢这个框架,但是我很难弄清楚如何编写一个path的单元/集成testing。 能够unit testing简单的模块很容易,并已与摩卡做; 然而,我的unit testingExpress表示失败,因为我传入的响应对象不保留这些值。 testing路由function(routes / index.js): exports.index = function(req, res){ res.render('index', { title: 'Express' }) }; unit testing模块: var should = require("should") , routes = require("../routes"); var request = {}; var response = { viewName: "" , data : {} , render: function(view, viewData) { viewName = view; data = viewData; […]

有没有一种方法Object.freeze()的JavaScriptdate?

根据MDN Object.freeze()文档 : Object.freeze()方法冻结一个对象:也就是说,阻止新的属性被添加到它; 防止现有的属性被删除; 并防止现有属性或其可枚举性,可configuration性或可写性被更改。 实质上,该对象是有效的不可变的。 该方法返回被冻结的对象。 我期待在一个date冻结呼叫将阻止该date的变化,但它似乎并没有工作。 这就是我在做什么(运行Node.js v5.3.0): let d = new Date() Object.freeze(d) d.setTime(0) console.log(d) // Wed Dec 31 1969 16:00:00 GMT-0800 (PST) 我会期待的调用setTime要么失败,要么什么都不做。 任何想法如何冻结date?

Node.js的validation库

有没有一个好的validation框架node.jsvalidationvariables为: 如果它的stringtypes,date,数字等 最大和最小长度 电子邮件,电话 等等…

我是否应该试试我的testing?

我应该把什么东西放在.npmignore ? testing? 东西像.travis.yml , .jshintrc ? 运行模块时什么都不需要(自述除外)? 我找不到任何指导。

Node.js的事件驱动有什么不同? 我们不能在ASP.Net的HttpAsyncHandler中做到这一点吗?

我在networking编程方面并不是很有经验,而且我也没有在Node.js中编写任何代码,只是对事件驱动的方法感到好奇。 这看起来不错。 文章解释了当我们使用基于线程的方法来处理请求时可能发生的一些不好的事情,而应该select事件驱动的方法。 在基于线程的情况下,收银员/线程与我们卡在一起,直到我们的食物/资源准备就绪。 在事件驱动的情况下,收银员将我们发送到请求队列的某个地方,所以我们在等待我们的食物时不会阻止其他请求。 要扩展基于线程的阻塞,您需要增加线程的数量。 对我来说,这似乎是不正确地使用线程/线程池的一个不好的借口。 不能正确处理使用IHttpAsyncHandler? ASP.Net接收一个请求,使用ThreadPool并运行处理程序(BeginProcessRequest),然后在里面我们用一个callback加载文件/数据库。 该线程应该可以自由处理其他请求。 一旦完成文件读取,ThreadPool就会被再次调用并执行剩余的响应。 对我来说不是那么不同,为什么这不是可扩展的? 我所知道的基于线程的一个缺点是,使用线程需要更多的内存。 但只有这些,你才能享受到多核的好处。 我怀疑Node.js根本没有使用任何线程/内核。 所以,基于事件驱动和基于线程的(不要带“因为它是Javascript和每个浏览器…”的说法),有人可以指出使用Node.js的实际好处,而不是现有的技术? 这是一个长期的问题。 谢谢 :)