Node.js – ¿Puedo instalar el paquete NPM en una aplicación de PhoneGap / Cordova?

Estoy creando una aplicación móvil gracias a Cordova, y como Cordova se basa en Node.js, pensé que podía usar paquetes NPM en la aplicación.

Por ejemplo, quiero que mi aplicación móvil se comunique con una base de datos MySQL remota. Pensé que podría usar el paquete mysql NPM ( https://www.npmjs.org/package/mysql ) para insertar un controlador MySQL en mi aplicación móvil, pero no veo ningún documento o tutos para instalar los paquetes NPM en mi aplicación móvil.

Entonces, ¿es posible “incrustar” paquetes NPM en una aplicación Cordova? ¿Es mi aplicación “architecture” mala?

Muchas gracias por tu ayuda.

Saludos, Sylvain

Puede usar paquetes de nodos para propósitos de desarrollo como grunt, bower, etc. pero dentro de la aplicación tiene que usar los plugins phonegap / cordova.

No puede usar módulos de nodos en su aplicación phonegap, porque incluso si son archivos js, requieren el tiempo de ejecución Node.JS para funcionar y no puede instalar o incrustar NodeJS en las plataformas móviles.

Pero puede usar cualquier biblioteca JS que no tenga una dependencia de Node, algunas de las que he usado son moment.js, knockout.js, jquery, backbone.

Espero eso ayude.

La statement en su código fallará si no ha incluido el complemento de sqlite en su proyecto.

var db = window.sqlitePlugin.openDatabase({name: "test.db"}); 

También deberías estar esperando que el evento deviceready se active antes de usar los complementos de cordova.
Puede usar la llamada a window.openDatabase () que crea una base de datos sqlite y no necesita el complemento sqlite.
A continuación se muestra el código para usar la llamada a openDatabase en su aplicación.

 // Wait for device API libraries to load // document.addEventListener("deviceready", onDeviceReady, false); // device APIs are available // function onDeviceReady() { var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); db.transaction(populateDB, errorCB, successCB); } // Populate the database // function populateDB(tx) { tx.executeSql('DROP TABLE IF EXISTS DEMO'); tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); } // Transaction error callback // function errorCB(err) { alert("Error processing SQL: "+err); } // Transaction success callback // function successCB() { alert("success!"); } 

El fragmento de código anterior se toma de la documentación de la API de Cordova. Vea aquí para más detalles. A pesar de que la documentación es para 3.0, debería funcionar para 3.5.