如何在现有的PhoneGap应用程序中更新Cordova?

谷歌已经通知我,我们的一些Phonegap应用程序正在使用一个现在被认为是不安全的Cordova版本,并且需要更新,但是现在我build立了这些应用程序已经很长时间了,因为这些文档对我来说没什么意义! 我在GNU / Linux上使用Android Studio,据我所知,我使用NodeJS(npm命令行)来创build基本的Phonegap应用程序,然后将其导入到Android Studio中。 很多文档引用了phonegap或cordova命令行,这些命令行根本不存在 – 我只安装了npm。 我从一个命令行中运行了“npm update -g cordova”,它似乎已经成功地启用了Cordova v4,但是如何更新单个应用程序来使用它呢? 在每个项目中的平台/ android / libs我有一个cordova-3.0.0.jar文件,并在平台/ android我有一个cordova文件夹…我只是replace此文件夹和.jar文件,并使用重构函数Android Studio? 我从哪里复制这些? 据推测,更新npm执行已经倾倒了较新的文件的地方… 干杯。

Node.js模块范式的基础?

我正在努力掌握一些基本的基本知识,而且我觉得这不仅阻碍了我,还导致了糟糕的代码,我不喜欢这样做。 我理解将代码的function块分解成单独模块的概念,比如说路由,数据库模型等,但是我真的很难理解如何正确编排所有这些独立模块的相互依赖的function。 让我举个例子说明我的斗争在哪里。 例1 我的ExpressJS“应用程序”安装在我的主程序模块中,就像您在每个教程中看到的一样。 不过,我也需要访问其他模块中的应用程序实例。 我怎么做? 我从各种教程中学到的一个方法是让整个模块导出一个函数,将应用程序作为参数,然后在函数中做我所需要的。 但是,在我看来,增加了很多事情的复杂性。 现在,我不但已经将一个完整的模块包含在一个函数中,而且似乎也失去了将多个函数,对象或其他variables导出该模块的能力。 模块作为一个function module.exports = function(app) { blah; }; 没有function的模块 exports.func1 = function() { } exports.func2 = function() { } 后者给了我更多的灵活性,但是我似乎被迫经常使用前者,因为我需要从其他地方传入类似于应用程序的东西。 例2 我正在使用连接rest为我的REST API。 我的API的所有代码都存放在一个名为“api”的单独模块中。 直到最近一直很好。 现在我需要从我的路由模块中访问api模块中的函数。 目前我的主要路线是在我的api 之前定义的,所以我不能准确地将我的api导出传递到我的路由函数中。 我可能会扭转它们,但这只是掩盖了一个更大的问题。 总而言之,这个问题是相互依赖性日益增加的问题 随着我的代码库的增长,我发现越来越频繁的是,各个模块需要彼此协作 – 让它们全部完全无法实现是不可行的。 有时候这是可能的,但它是不洁的。 我觉得我错过了一些基本的Node.JS(或者也许只是Javascript)范例,用于pipe理所有这些。 如果有人能帮助我理解,我会最感激的。 我是其他语言(如C ++和Python)的经验丰富的开发人员,如果它有助于其他方面的东西。 试图总结这个问题 我觉得我没有充分传达我的发帖意图,所以让我试着总结一个有问题的问题。 server.js var http = require('http'), express […]

当我在onFileUploadStart()中包含逻辑时,Multer不上载文件 – NodeJs

我试图用multer只上载带有节点的图像文件 file upload成功与此: app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadData: function (file, data) { console.log(data.length + ' of ' + file.fieldname + ' arrived'); }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path); } })); 但我想限制它只有图像,并添加一些用户身份validation(用户身份validation尚未实现在下面的例子中)。 当我启动包含onFileUploadStart的服务器时,它将login到它上传的控制台,但是当我检查我的上传文件夹时,什么也没有。 app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadStart: function (file) { console.log(file.mimetype); if (file.mimetype !== 'image/png' || […]

在Cassandra中使用用户定义的types和nodejs

我正在尝试在Cassandra中使用用户定义的types和nodejs。 按照文档,我成功地设法在cqlsh中执行( https://www.datastax.com/documentation/cql/3.1/cql/cql_using/cqlUseUDT.html )。 我设法在cqlsh中插入项目,但不能使用cassandra-driver模块。 我明白他们是一些错综复杂的使用JavaScript( http://www.datastax.com/documentation/developer/nodejs-driver/1.0/nodejs-driver/reference/nodejs2Cql3Datatypes.html ),我已经尝试了不同的select提供,但我不能得到它的工作。 这是我的审判和他们的错误信息: var insertQuery = 'INSERT INTO mykeyspace.users (id, name) VALUES (?, ?)' client.execute(insertQuery, ['62c36092-82a1-3a00-93r1-46196ee77204', { firstname: 'paul', lastname: 'jacques'}], {hints: ['uuid', 'map<text, text>']}, function(err) { console.log(err);}) { name: 'ResponseError', message: 'Not enough bytes to read 0th field java.nio.HeapByteBuffer[pos=0 lim=9 cap=9]', info: 'Represents an error message from the […]

下面的代码等待forEach完成

我有一个包含各种数据的大型数组,以及一个对数组执行一些基本的但是耗时的分析的函数。 我使用forEach循环遍历数组。 如果条件满足,我希望函数返回一个特定的元素,否则使用Promises,因为函数可能需要大量的时间来完成: var analyzeData = function (arr) { return new Promise(function (resolve, reject) { var answer = false; arr.forEach(function (elm) { if (elm.foo == true) { answer = elm; } }); resolve(answer); }); } 我遇到的问题是,我怀疑在forEach循环完成之前, answer正在解决; 即在forEach循环可以完成检查每个元素的foo属性之前,函数parsing为answer ,默认为false。 有没有办法确保forEach循环之后的代码等待循环完成迭代,或者以其他方式循环访问数组?

node.js的debugging模块:如何避免这种繁琐的初始化?

node.js的debug模块确实整洁。 我想知道是否有任何方法可以防止在每个模块中这种乏味和过度冗余的初始化: require('debug').enable('module-name:log module-name:ERROR'); var log = require('debug')('module-name:log'); var error = require('debug')('module-name:ERROR'); 正如你所看到的,它在两个不同的层次上是冗余的:我需要在实例化它们之前“启用”logging器,发送两次相同的名称作为string,并且我需要写出模块名称。 有没有办法做到这一点automagically?

正则expression式字边界在“ – ”

我有以下格式的string。 “ad60 ad60-12 ad60 12-ad60” 现在我只想在“ad60”被写入的地方find匹配。 我开始了 / \ bad60 \ B / I 但是正则expression式发现“ – ”不是string的一部分。 返回4个匹配项。 我尝试了很多东西,但是他们都要么返回4场比赛,要么什么都不返回 任何forms的帮助,将不胜感激。

在keystonejs上使用CloudinaryImage的标题图像库

我正在使用keystonejs和CloudinaryImages来创build一个图片库。 { type: Types.CloudinaryImages } 我需要为图像添加标题的function。 我也读这个: https : //github.com/keystonejs/keystone/pull/604 但我不知道这个选项是否已经到位。 任何想法? 谢谢。

Node.js – Socket.io:socket.request未定义

我已经在这里读到,我可以用node.js获取客户端的IP socket.request.connection.remoteAddress 例如: var socket = io.listen(server); socket.on('connection', function(client){ var client_ip_address = socket.request.connection.remoteAddress; } 但是当我使用这个解决scheme时,我得到错误消息“无法读取属性”未定义的连接“,这意味着socket.request是未定义的。 为什么会这样呢? 我也尝试了在同一页面上find的另一个选项: var sHeaders = socket.handshake.headers; console.info('[%s:%s] CONNECT', sHeaders['x-forwarded-for'], sHeaders['x-forwarded-port']); 但是这只是输出 [undefined:undefined] CONNECT

我怎样才能从另一个gulpfile运行一个构build?

作为我的构build过程的一部分,我需要在另一个项目的子模块上运行gulp构build。 我知道我可以使用“require('path / to / other / gulpfile.js')”,但似乎并没有吞噬任何东西来处理任务名称冲突。 这两个gulpfiles有一个“build设”的任务。 有没有办法在运行时重命名已定义的吞咽任务?