繁体   English   中英

在使用“pkg”编译器将整个服务器捆绑到可执行文件后,如何要求 json 数据到 Node.js?

[英]How to require json data to Node.js after bundling the whole server into an executable with the "pkg" compiler?

在我通过“npm start”运行的普通 node.js 环境中,我总是可以只需要/导入 JSON 并且将接收文件中的数据。

例如,如果我有 "./Assets/port.json" 并且它包含{"port": 3000}当我导入它并访问数据时,我将获得端口 3000,如果 port.json 文件中的数据改成port:3001,我导入的时候会得到3001端口。 工作正常。

但是一旦我使用“pkg server.js” package 文件并且我得到了我的可执行文件,似乎 json 数据被写入可执行二进制文件,然后当我更改 Z466DEEC76ECDF5FCA6D38571F6324 文件中的数据时,我仍然得到相同的文件在将 node.js 代码编译为可执行文件期间,我在 json 文件中拥有的数据。

一旦我的 node.js 代码被编译成可执行文件,如何防止 json 数据被编译成二进制文件并导入 json 数据? 这对我来说非常重要,因为我正在创建一个将在他们的 LAN 上运行服务器的客户端应用程序,所以我必须能够从 json 文件中导入动态 ipv4/端口。

从 pkg文档

另一方面,为了在运行时访问真实的文件系统(选择用户的外部 javascript 插件,json 配置,甚至获取用户目录列表),您应该使用 process.cwd() 或 path.dirname(process.执行路径)。

代码如:

require("./Assets/port.json")

将自动替换为 pkg 中捆绑资产的加载,这就是 pkg 所做的。 它使用某些规则搜索您的源代码以加载事物。 但是,如果您使用以下内容加载它:

const config = require(path.join(path.dirname(process.execPath), "port.json"));
console.log(config.port);

并确保文件port.json在您的应用程序安装到某处后与您打包的可执行文件位于同一目录中,然后 pkg 将保留此代码并允许您从与可执行文件所在的同一目录动态加载配置文件.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM