Доступ к полям собственного приложения из node.js

#javascript #java #android #node.js

#javascript #java #Android #node.js

Вопрос:

У меня есть собственное мобильное приложение для Android (Java), но теперь мне нужно запустить node.js сервер на стороне клиента. Я новичок во всем этом, поэтому я решил использовать Node.js для мобильных приложений (https://code.janeasystems.com/nodejs-mobile ), чтобы запустить мой index.js досье. Я добавил весь необходимый персонал NDK в соответствии с инструкциями, и до этого момента все работает нормально в коде JS:

   const o = {
                serverUrl: process.env.SERVER_URL,
                token: process.env.TOKEN,
             ...
            };
  

JS-код по некоторым причинам не может видеть файл «.env»

 NODEJS-MOBILE: path.js:28
throw new TypeError('Path must be a string. Received '   inspect(path));
  

и даже если вы сможете — java-часть не сможет обновить поле ТОКЕНА, потому что невозможно записать в файл с пустым именем (по крайней мере, мне это не удалось).

Итак, вопрос в том, какие инструменты (локальные файлы / библиотеки / SharedPreferences?) Я могу использовать, чтобы иметь возможность обновлять поля из кода Java и использовать их в коде JS?

Я новичок в неродной разработке, поэтому буду признателен за любую подсказку.

Комментарии:

1. «Node.js для мобильных приложений» — интересно!

Ответ №1:

Решение оказалось проще, чем я думал.

Процесс.свойство argv возвращает массив, содержащий аргументы командной строки, переданные при Node.js процесс был запущен.

Node.js для мобильных приложений библиотека позволяет использовать ее следующим образом:

   startNodeWithArguments(new String[]{"node",
                nodeDir   "/index.js",
                Constants.SERVER_URL,
                Constants.USER_TOKEN,
                ...
        });
  

И затем в js-файле мы можем получить эти значения следующим образом:

  const o = {
                    serverUrl: process.argv[2],
                    token: process.argv[3],
                    ...
            };
  

UPD:

Я нашел еще одно решение для использования переменных среды без файла .env. В «startNodeWithArguments ()» возможно использовать метод «setenv ()».

 startNodeWithArguments(JNIEnv *env, jobject, jobjectArray arguments) {

    const char *token = env->GetStringUTFChars((jstring)env->GetObjectArrayElement(arguments, 2), nullptr);

    setenv("TOKEN", token, 1);
...
}