node.js - 如何为节点 pkg 创建配置文件
问题描述
我使用节点pkg
来创建我的 nodejs 服务的 .exe:https ://www.npmjs.com/package/pkg
我的问题是:如何让 .exe 使用 config.js 来获取一些设置值?ip、端口、数据库名称等基本内容。因为我有 3 个环境,我想对所有环境使用相同的 exe,但每个环境使用不同的 config.js 文件。
到目前为止,如果我这样做pkg app.js
,它会创建一个不查看任何其他文件的 .exe。完全孤立无援。如何让它在config.js
启动时查看?
在网站上,他们确实有一个关于config
https://github.com/zeit/pkg#config的部分,但我不明白如何使用它。目前我有我的 app.js,还有包含配置信息的 secrets.js。
解决方案
我不确定这是正确的方法,但我希望这对某人有所帮助。
参考 pkg 文档,在运行时,__dirname 变为“/snapshot/project”。
因此,通过检查 __dirname,您可以确定您所在的环境。
(节点 app.js 或 app.exe)。
然后我们可以像下面这样分离require语句。
const PKG_TOP_DIR = 'snapshot';
const runInPKG = (function(){
const pathParsed = path.parse(__dirname);
const root = pathParsed.root;
const dir = pathParsed.dir;
const firstDepth = path.relative(root, dir).split(path.sep)[0];
return (firstDepth === PKG_TOP_DIR)
})();
let config = require('./appconfig.json');
if(runInPKG) {
const deployPath = path.dirname(process.execPath);
config = require(path.join(deployPath, 'appconfig.json'));
}
- 将上述代码添加到您的 app.js 会在 pkg 构建时发出一些警告。
包。--targets node8-win-x64 --out-path ./dist
pkg@4.4.0 警告 无法解析 'path.join(deployPath, 'appconfig.json')'
app.js
动态 require 可能在运行时失败,因为请求的文件
在编译时未知并且未包含在可执行文件中。
使用字符串文字作为 'require' 的参数,或保持
原样并在 'scripts' 选项中指定解析的文件名。
推荐阅读
- java - 具有中间表和非主键的 OneToOne 映射
- odoo - Odoo 10 操作错误:'web_settings_dashboard.main'
- java - Java 8 更新 162 javax.net.ssl.sslexception 收到致命警报意外消息
- python - 在帖子列表中显示用户帖子
- python - 查询字典列表,返回具体字典?
- angular - 从列表页面到主页的 Ionic 3 侧边菜单不去
- list - 综合列表上的动态函数(Haskell)
- google-cloud-platform - 查看用户何时添加到 GCP 项目的方法
- r - for 循环不通过下一个元素
- python - 任务计划程序批处理文件启动 Python 脚本并且随机不产生输出 ~20% 的时间