#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);
...
}