javascript - run - instalar apache cordova
¿Agregar complementos de Cordova a Vue-Cordova? (2)
Es posible que tenga que seguir este enlace para obtener soporte para Vue-Cordova si no es compatible de manera inmediata. El procedimiento paso a paso se define en el enlace.
También la pregunta es respondida por el propio autor aquí . Espero eso ayude. Aclamaciones
Estoy intentando usar Vue-Cordova junto con Cordova-plugin-file-opener2 para abrir archivos PDF en aplicaciones ios / android.
Vue-Cordova define los complementos relacionados con el dispositivo en la propiedad de datos de la instancia de la aplicación vue:
data: function () {
return {
cordova: Vue.cordova,
plugins: {
''cordova-plugin-camera'': function () {
if (!Vue.cordova.camera) {
window.alert(''Vue.cordova.camera not found !'')
return
}
Vue.cordova.camera.getPicture((imageURI) => {
window.alert(''Photo URI : '' + imageURI)
}, (message) => {
window.alert(''FAILED : '' + message)
}, {
quality: 50,
destinationType: Vue.cordova.camera.DestinationType.FILE_URI
})
},
....
Puedo acceder a estas propiedades en mi simulador ios, pero no puedo acceder a los complementos que instalo a través de cordova-cli. El objeto Cordova que debería estar expuesto a los comandos de abrir archivos file2 como:
cordova.plugins.fileOpener2.open(
filePath,
fileMIMEType,
{
error : function(){ },
success : function(){ }
}
);
tiene propiedades no incluidas en la instancia de Vue.cordova. Cuando intento acceder a ellos con: Vue.cordova.plugins.fileOpener2
estoy definido.
¿Alguien puede decirme qué debo hacer para agregar complementos a Vue-Cordova, o posiblemente pasar por alto de alguna manera?
EDITAR:
Mi intento de solución no funciona, pero siento que me estoy acercando.
Tomé los siguientes pasos:
- clonado https://github.com/pwlin/cordova-plugin-file-opener2 en la carpeta de complementos de mi proyecto cordova
cambió lo siguiente en
node_modules/vue-cordova/index.js
:function (module, exports, webpack_require ) {
''use strict''; // list here all supported plugins var pluginsList = [''cordova-plugin-camera'', ''cordova-plugin-device'', ''cordova-plugin-geolocation'', ''cordova-plugin-contacts'', ''cordova-plugin-file-opener2'']; exports.install = function (Vue, options) { // declare global Vue.cordova object Vue.cordova = Vue.cordova || { deviceready: false, plugins: [] }; // Cordova events wrapper Vue.cordova.on = function (eventName, cb) { document.addEventListener(eventName, cb, false); }; // let Vue know that deviceready has been triggered document.addEventListener(''deviceready'', function () { Vue.cordova.deviceready = true; }, false); // load supported plugins pluginsList.forEach(function (pluginName) { var plugin = __webpack_require__(1)("./" + pluginName); plugin.install(Vue, options, function (pluginLoaded) { if (pluginLoaded) { Vue.cordova.plugins.push(pluginName); } if (Vue.config.debug) { console.log(''[VueCordova]'', pluginName, ''→'', pluginLoaded ? ''loaded'' : ''not loaded''); } }); }); };
/ /}, / 1 / / / function (module, exports, webpack_require ) {
var map = { "./cordova-plugin-camera": 2, "./cordova-plugin-camera.js": 2, "./cordova-plugin-contacts": 3, "./cordova-plugin-contacts.js": 3, "./cordova-plugin-device": 4, "./cordova-plugin-device.js": 4, "./cordova-plugin-geolocation": 5, "./cordova-plugin-geolocation.js": 5, "./cordova-plugin-file-opener2": 6 }; function webpackContext(req) { return __webpack_require__(webpackContextResolve(req)); }; function webpackContextResolve(req) { return map[req] || (function() { throw new Error("Cannot find module ''" + req + "''.") }()); }; webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = 1;
/ *** /},
...
/ *** / función (módulo, exportaciones) {
''use strict''; exports.install = function (Vue, options, cb) { document.addEventListener(''deviceready'', function () { if (typeof cordova.plugins.fileOpener2 === ''undefined''){ return cb(false); } // pass through the geolocation object Vue.cordova.fileOpener2 = cordova.plugins.fileOpener2; return cb(true); }, false); }; /***/ },
agregué lo siguiente a los complementos en el objeto de datos en app.vue: (No estoy seguro de qué más agregar a esta definición. ¿Alguna sugerencia?)
''cordova-plugin-file-opener2'': function () {if (! Vue.cordova.fileOpener2) {window.alert (''Vue.cordova.fileOpener2 no encontrado!'') return}}
Después de seguir estos tres pasos, espero que {{fileOpener2}} esté disponible en mi plantilla como un objeto, pero no lo es. ¿Me estoy perdiendo de algo?
¿ deviceready
evento deviceready
?
Tal vez intente acceder a su complemento una vez que se haya activado este evento. Ejemplo:
Vue.cordova.on(''deviceready'', () => {
// here check for your variable
})
Sin embargo, lo más probable es que no hayas seguido la guía de contribución para admitir este complemento tal como lo establece Gandhi allí. No debe editar los archivos generados por el paquete web, sino generar el suyo propio:
- clonar el repo
vue-cordova
- reemplace
node_modules/vue-cordova
en su proyecto con un enlace simbólico al repositorio clonado - agregue los complementos y ejecute
npm run build
(onpm run dev
)
Luego, vuelva a intentar crear su aplicación Cordova