Как настроить файл "file.list" в / platform / android / assets для выбора правильного пути? - PullRequest
1 голос
/ 07 мая 2019

Мой вопрос касается узла js для мобильного от JaneaSystems . У меня есть веб-приложение, которое я конвертирую как приложение Cordova. Я выполнил все инструкции, приведенные в руководстве по началу работы

https://code.janeasystems.com/nodejs-mobile/getting-started-cordova

Однако при запуске nodejs из js / index.js в эмуляторе Android я получаю сообщение об ошибке: « Ошибка инициализации: java.io.FileNotFoundException: www \ nodejs-project / main.js"

Мой файл index.js выглядит следующим образом:

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    // deviceready Event Handler
    //
    // Bind any cordova events here. Common events are:
    // 'pause', 'resume', etc.
    onDeviceReady: function() {
        this.receivedEvent('deviceready');
        startNodeProject();
    },

    // Update DOM on a Received Event
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
    }
};

app.initialize();

function channelListener(msg) {
    console.log('[cordova] received:' + msg);
}

function startupCallback(err) {
    if (err) {
        console.log(err);
    } else {
        console.log ('Node.js Mobile Engine Started');
        nodejs.channel.send('Hello from Cordova!');
    }
};

function startNodeProject() {
    nodejs.channel.setListener(channelListener);
    nodejs.start('main.js', startupCallback);
    // To disable the stdout/stderr redirection to the Android logcat:
    // nodejs.start('main.js', startupCallback, { redirectOutputToLogcat: false });
};

мой main.js выглядит следующим образом:

const cordova = require('cordova-bridge');

cordova.channel.on('message', function (msg) {
  console.log('[node] received:', msg);
  cordova.channel.send('Replying to this message: ' + msg);
});

Когда я выполняю команду cordova build android , создается файл с именем «file.list» в каталоге / platform / android / assets, содержимое которого

www\nodejs-project/main.js

Даже если я вручную изменил вышеприведенное значение на www\nodejs-project\main.js, я все равно получаю исключение FileNotFound.

Может кто-нибудь сказать, что мне не хватает, поскольку файл main.js присутствует в nodejs-project?

Пожалуйста, дайте мне знать, если понадобятся какие-либо подробности, так как я старался быть максимально тщательным.

1 Ответ

1 голос
/ 15 мая 2019

Проблема здесь в том, что Android ожидает иметь косые черты на своих путях, а сценарий, который создает списки с путями путей проекта nodejs-mobile, вводил обратную косую черту при разработке в Windows.

Это было исправлено и выпущено в nodejs-mobile-cordova 0.3.2:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...