Tag: javascript

用jsdocloggingcallback的正确方法是什么?

我花了很长一段时间在互联网上寻找最好的方式来正确loggingjsdoc的callback,但不幸的是,我还没有find一个好的方法。 这是我的问题: 我正在为开发人员编写一个Node.js库。 这个库提供了开发人员将要使用的多个类,函数和方法。 为了使我的代码清晰易懂,以及(希望)将来会自动生成一些API文档,我已经开始在代码中使用jsdoc来自我logging正在发生的事情。 比方说,我定义了一个如下的函数: function addStuff(x, y, callback) { callback(x+y); }); 使用jsdoc,我目前正在logging这个函数,如下所示: /** * Add two numbers together, then pass the results to a callback function. * * @function addStuff * @param {int} x – An integer. * @param {int} y – An integer. * @param {function} callback – A callback to run […]

使用callback函数和闭包时,在JavaScript中维护对“this”的引用

我发现自己将“this”分配给一个variables,所以我可以很容易地在callback和封闭中使用它。 这是不好的做法? 有没有更好的方式来回溯到原来的function? 这是一个典型的例子。 User.prototype.edit = function(req, res) { var self = this, db = this.app.db; db.User.findById('ABCD', function(err, user)) { // I cannot use this.foo(user) self.foo(user); }); }; User.prototype.foo = function(user) { }; 你通常使用这种方法,或者你find了一个更清洁的解决scheme?

使用Node.js将对象写入文件

我已经search了所有的这个stackoverflow /谷歌,但似乎无法弄清楚。 我正在抓取给定URL页面的社交媒体链接,该函数返回一个包含URL列表的对象。 当我尝试将这些数据写入一个不同的文件时,它将以[object Object]输出到文件中,而不是预期的:[' https://twitter.com/#!/101Cookbooks','http:// www。 facebook.com/101cookbooks '],就像我console.log()的结果。 这是我在Node中读写文件的悲哀尝试,试图读取每行(url)并通过函数调用request(line, gotHTML) : fs.readFileSync('./urls.txt').toString().split('\n').forEach(function (line){ console.log(line); var obj = request(line, gotHTML); console.log(obj); fs.writeFileSync('./data.json', obj , 'utf-8'); }); 供参考 – gotHTML函数: function gotHTML(err, resp, html){ var social_ids = []; if(err){ return console.log(err); } else if (resp.statusCode === 200) { var parsedHTML = $.load(html); parsedHTML('a').map(function(i, link){ var href […]

噶/茉莉花超时没有运行testing

我正在尝试从Grunt运行Karma / Jasmine,在http://newtriks.com/2013/12/31/automating-react-with-yeoman-and-grunt/ Karma推出PhantomJS(或Chrome),根据singleRun,它要么超时,要么坐在那里,什么都不做。 我试着改变基于阅读类似问题的人的解决schemecaptureTimeout和browserNoActivityTimeout ,但似乎并没有工作。 我的相关版本: NodeJS:0.10.25 噶玛:0.12.16 Webpack:1.1.11 webpack-dev-server:1.4.1 业力 – 茉莉花:0.1.5 Linux:Ubuntu 14.04 我发现在OS X上有同样的问题 : 我试过更新所有我的开发依赖到最新版本,但问题仍然存在。 我的控制台输出如下。 引用bundle的webpack行现在有效/无效令人担忧,但是我找不到任何有关它们的含义的信息。 这是我的控制台输出: Running "karma:unit" (karma) task DEBUG [config]: autoWatch set to false, because of singleRun DEBUG [plugin]: Loading karma-* from /home/ed/workspace/wwb-app/node_modules DEBUG [plugin]: Loading plugin /home/ed/workspace/wwb-app/node_modules/karma-chrome-launcher. DEBUG [plugin]: Loading plugin /home/ed/workspace/wwb-app/node_modules/karma-coffee-preprocessor. DEBUG [plugin]: Loading […]

uglify-js可以删除console.log语句吗?

我使用uglify-js来缩小源代码。 我想删除原始源代码的console.log语句。 可能吗? 还是有没有其他的压缩机工具支持这个? 我在Node.js中使用下面的代码。 var uglify = require('uglify-js'); var originalSourceCode = 'var name = function(){var str = "test"; return str}; console.log("log data");'; var minifiedCode = uglify.minify(originalSourceCode, { fromString : true, mangle: {}, warnings: true }); console.log(minifiedCode); 输出是: $node m.js { code: 'var name=function(){var a="test";return a};console.log("log data");', map: 'null' } 在缩小的代码中,console.log不会被删除。

Passport-Facebook身份validation不提供所有Facebook帐户的电子邮件

我正在使用Passport-Facebook身份validation。 passport.use(新FacebookStrategy({ clientID:'CLIENT_ID', clientSecret:'CLIENT_SECRET', callbackURL:“http://www.example.com/auth/facebook/callback” }, 函数(accessToken,refreshToken,profile,done){ process.nextTick(function(){ 执行console.log(configuration文件) }); } )); 对于一些Facebook帐户,我没有得到email_id,我甚至尝试通过使用一个范围variables如下,但我仍然无法得到email_id。 profileUrl:“”和ProfileFields:['','']

摩卡APItesting:得到'TypeError:app.address不是一个函数'

我的问题 我已经编写了一个非常简单的CRUD API,最近我也开始编写一些使用chai和chai-httptesting,但是在使用$ mocha运行我的testing时遇到了问题。 当我运行testing时,在shell上出现以下错误: TypeError: app.address is not a function 我的代码 这里是我的一个testing( /tests/server-test.js )的示例: var chai = require('chai'); var mongoose = require('mongoose'); var chaiHttp = require('chai-http'); var server = require('../server/app'); // my express app var should = chai.should(); var testUtils = require('./test-utils'); chai.use(chaiHttp); describe('API Tests', function() { before(function() { mongoose.createConnection('mongodb://localhost/bot-test', myOptionsObj); }); beforeEach(function(done) { […]

缩小NodeJS中使用的代码是否有意义?

我想知道,因为Clojure编译器和UglifyJS不仅优化代码的大小,而且性能(尽pipe我认为大小是主要优先级),如果我的node.js应用程序被缩小,它会运行得更快吗? 我知道它可能取决于应用程序,但我一般问这个。

如何将自定义脚本添加到运行JavaScript文件的package.json文件中?

我希望能够在将运行node script1.js的项目目录中执行命令script1 。 script1.js是同一个目录中的文件。 该命令需要特定于项目目录,这意味着如果我发送其他人项目文件夹,他们将能够运行相同的命令。 到目前为止,我已经尝试添加: "scripts": { "script1": "node script1.js" } 到我的package.json文件,但是当我尝试运行script1我得到以下输出: zsh: command not found: script1 有没有人知道将上述脚本添加到项目文件夹所需的步骤? *注意:该命令不能添加到bashconfiguration文件(不能是一个特定于计算机的命令) 请让我知道,如果你需要任何澄清。

asynchronous/等待和ES6产出与发电机之间的差异

我正在阅读这篇精彩的文章 – https://www.promisejs.org/generators/ 它清楚地突出了这个函数,它是处理生成器函数的辅助函数: function async(makeGenerator){ return function () { var generator = makeGenerator.apply(this, arguments); function handle(result){ // result => { done: [Boolean], value: [Object] } if (result.done) return Promise.resolve(result.value); return Promise.resolve(result.value).then(function (res){ return handle(generator.next(res)); }, function (err){ return handle(generator.throw(err)); }); } try { return handle(generator.next()); } catch (ex) { return Promise.reject(ex); } } } […]