Tag: node.js

连锁的承诺没有通过拒绝

我有一个问题,理解为什么拒绝不通过承诺链传递,我希望有人能够帮助我理解为什么。 对我来说,将function附加到一系列的承诺意味着我的意图是我依靠一个原始的承诺来实现。 这很难解释,所以让我首先展示一个我的问题的代码示例。 (注意:这个例子是使用Node和延迟节点模块,我用Dojo 1.8.3testing过,结果相同) var d = require("deferred"); var d1 = d(); var promise1 = d1.promise.then( function(wins) { console.log('promise1 resolved'); return wins;}, function(err) { console.log('promise1 rejected'); return err;}); var promise2 = promise1.then( function(wins) { console.log('promise2 resolved'); return wins;}, function(err) { console.log('promise2 rejected'); return err;}); var promise3 = promise2.then( function(wins) { console.log('promise3 resolved'); return wins;}, […]

删除嵌套的承诺

我不熟悉NodeJS中的使用请求和承诺的承诺和编写networking代码。 我想删除这些嵌套的承诺,并链接他们,但我不知道我会怎么做/是否是正确的路要走。 exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { boxViewerRequest('documents', {url: response.request.href}, 'POST') .then(function(response) { boxViewerRequest('sessions', {document_id: response.body.id}, 'POST') .then(function(response) { console.log(response); }); }); }); }; 这是请求代码: var baseContentURL = 'https://api.box.com/2.0/'; var baseViewerURL = 'https://view-api.box.com/1/'; function boxContentRequest(url, accessToken) { return new Promise(function (resolve, reject) { […]

有一个构造函数返回一个Promise是不好的做法吗?

我正在尝试为博客平台创build一个构造函数,并且里面有许多asynchronous操作。 这些范围从抓取目录中的post,parsing它们,通过模板引擎发送它们等等。 所以我的问题是,让我的构造函数返回一个承诺,而不是他们所谓的newfunction的对象是不明智的。 例如: var engine = new Engine({path: '/path/to/posts'}).then(function (eng) { // allow user to interact with the newly created engine object inside 'then' engine.showPostsOnOnePage(); }); 现在,用户也可能不提供补充Promise链接: var engine = new Engine({path: '/path/to/posts'}); // ERROR // engine will not be available as an Engine object here 这可能会造成问题,因为用户可能会困惑为什么 engine 在施工后不可用。 在构造函数中使用Promise的原因是有道理的。 我希望整个博客在施工阶段后能够正常运行。 但是,在调用new之后,似乎几乎不能立即访问对象。 我讨论过使用engine.start().then()或engine.init()这样的方法来代替Promise。 但是那些也似乎是臭的。 […]

通过forEach循环使用async / await

在forEach循环中使用async/await有什么问题吗? 我试图循环通过一个文件的数组,并await每个文件的内容。 import fs from 'fs-promise' async function printFiles () { const files = await getFilePaths(); // Assume this works fine files.forEach(async (file) => { const contents = await fs.readFile(file, 'utf8'); console.log(contents); }) } printFiles() 这个代码确实有用,但是可能会出现这种情况? 我有一个人告诉我,你不应该在这样的高阶函数中使用async/await ,所以我只是想问一下是否有任何问题。

如何检索POST查询参数?

这是我简单的forms: <form id="loginformA" action="userlogin" method="post"> <div> <label for="email">Email: </label> <input type="text" id="email" name="email"></input> </div> <input type="submit" value="Submit"></input> </form> 这是我的Express.js /Node.js代码: app.post('/userlogin', function(sReq, sRes){ var email = sReq.query.email.; } 我试过sReq.query.email或sReq.query['email']或者sReq.params['email']等等,它们都不起作用。 他们都返回undefined 。 当我改变为一个Get调用,它的工作,所以..任何想法?

在Node.js中编写文件

我一直在试图find一种方法来使用Node.js写入文件,但没有成功。 我怎样才能做到这一点?

npm抛出错误没有sudo

我只是通过nodejs.org上的包安装node和npm,每当我尝试search或安装npm的时候,都会抛出下面的错误,除非我sudo命令。 我有一种感觉,这是一个权限问题? 我已经是pipe理员。 npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json' npm ERR! { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/Users/chietala/.npm/-/all/.cache.json' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Darwin 12.2.0 npm ERR! command "node" "/usr/local/bin/npm" "search" "bower" npm ERR! […]

Node.js + Nginx – 现在什么?

我在我的服务器上设置了Node.js和Nginx。 现在我想用它,但是在我开始之前有两个问题: 他们应该如何一起工作? 我应该如何处理这些请求? Node.js服务器有两个概念,哪一个更好: 一个。 为每个需要它的网站创build一个单独的HTTP服务器。 然后在程序的开始加载所有的JavaScript代码,所以代码被解释一次。 湾 创build一个处理所有Node.js请求的单个Node.js服务器。 这会读取请求的文件并清除其内容。 所以文件在每个请求上被解释,但是服务器逻辑要简单得多。 我不清楚如何正确使用Node.js。

如何完全卸载Node.js,并从头开始重新安装(Mac OS X)

即使在安装brew节点和NVM安装v0.6.19之后,我的节点版本始终为v0.6.1-pre。 我的节点版本是: node -v v0.6.1-pre NVM说这个(在我第一次在一个bashterminal上安装一个版本的节点之后): nvm ls v0.6.19 current: v0.6.19 但是,当我重新启动bash,这是我所看到的: nvm ls v0.6.19 current: v0.6.1-pre default -> 0.6.19 (-> v0.6.19) 那么这个幻影节点0.6.1-pre在哪里,我该如何摆脱呢? 我试图通过NPM来安装库,以便我可以在一个项目上工作。 我尝试使用BREW在NVM之前更新,使用“brew update”和“brew install node”。 我已经尝试删除/ usr / local / include中的“node”目录以及“/ usr / local / lib”中的“node”和“node_modules”。 我试着卸载npm并按照这些指示重新安装它。 所有这一切都是因为我试图更新旧版本的节点来安装“zipstream”库。 现在我的用户目录中有文件夹,节点版本STILL不是最新的,即使NVM说它使用的是0.6.19。 理想情况下,我想卸载nodejs,npm和nvm,并且从头开始重新安装整个系统。

如何允许CORS?

我正在尝试在使用Express.js Web框架的Node.js应用程序中支持CORS。 我已经阅读了关于如何处理这个问题的Google小组讨论 ,并阅读了一些关于CORS如何工作的文章。 首先,我这样做了(代码是用CoffeeScript语法编写的): app.options "*", (req, res) -> res.header 'Access-Control-Allow-Origin', '*' res.header 'Access-Control-Allow-Credentials', true # try: 'POST, GET, PUT, DELETE, OPTIONS' res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS' # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept' res.header 'Access-Control-Allow-Headers', 'Content-Type' # … 这似乎并不奏效。 好像我的浏览器(Chrome)没有发送初始的OPTIONS请求。 当我刚刚更新资源块时,我需要提交一个跨源GET请求到: app.get "/somethingelse", (req, res) -> # … res.header 'Access-Control-Allow-Origin', '*' res.header 'Access-Control-Allow-Credentials', true res.header […]