从 node.js 访问本机应用程序的字段
Posted
技术标签:
【中文标题】从 node.js 访问本机应用程序的字段【英文标题】:Access to fields of native application from node.js 【发布时间】:2021-01-14 19:37:35 【问题描述】:我有一个原生 android (Java) 移动应用程序,但现在我必须在客户端运行 node.js 服务器。我对所有这些东西都不熟悉,所以我决定使用 Node.js for Mobile Apps (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 部分也将无法更新 TOKEN 字段,因为无法写入具有空名称的文件(至少,我没有成功)。
那么,问题是我可以使用哪些工具(本地文件/库/SharedPreferences?)来更新 java 代码中的字段并在 JS 代码中使用它们?
我是非本地开发的新手,所以任何提示都将不胜感激。
【问题讨论】:
“用于移动应用的 Node.js”——很有趣! 【参考方案1】:解决方案比我想象的要容易。
process.argv 属性返回一个包含命令行的数组 启动 Node.js 进程时传递的参数。
Node.js for Mobile Apps library 允许这样使用它:
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);
...
【讨论】:
以上是关于从 node.js 访问本机应用程序的字段的主要内容,如果未能解决你的问题,请参考以下文章
从 node.js 和 websockets 访问 IPython 命令行
如何在 node.js 和 mongoDB 本机驱动程序上启用调试?
使用适用于 Node JS 的 mongodb 本机驱动程序记录所有查询