【问题标题】:Retrieve application data directory in node.js在 node.js 中检索应用程序数据目录
【发布时间】:2014-09-08 08:00:43
【问题描述】:

我的 node.js 应用程序需要存储大量的二进制数据。使用本地文件系统似乎是合适的解决方案,但应用程序数据目录根据主机系统放置在不同的位置。

检索应用程序数据目录(如 %appdata%\appname 或 ~/.appname)的独立于系统的方法是什么?

【问题讨论】:

    标签: node.js appdata


    【解决方案1】:

    在 Windows 上,您可以尝试使用 process.env.APPDATA。在 Windows 10 或 Windows 8 等较新的 Windows 版本上,它通常会导致 C:\Users\user\AppData\Roaming

    在 MacOS 上,请改用 process.env.HOME

    【讨论】:

    • 我特别需要一种跨平台的方法。
    • 为什么?你能为他们写一个包装器吗?
    • 我最终做到了,但我希望有一个内置的方法。
    • 好吧,process.env 已经是一种跨平台的方法了。其余的只是环境变量(HOME、APPDATA、LOCALAPPDATA 等)。每个平台都有不同的文件夹结构,因此允许用户自定义他们想要的路径是有意义的。
    【解决方案2】:

    获取当前目录:__dirname

    如果您想获取另一个全局变量,例如应用程序目录,那么:

    process.env.ENV_VARIABLE
    

    ENV_VARIABLE 是您要访问的变量的名称

    您还可以查看nconf,它是“具有文件、环境变量、命令行参数和原子对象合并的分层 node.js 配置”

    【讨论】:

    • __dirname 通常不是存储应用程序数据的理想位置。在开发之外,它很可能类似于 Program Files\appname 或 /usr/bin/appname。在大多数生产系统上,此目录将被写保护或需要提升的权限。
    • 是的,我的后备是使用平台检测(通过 os.platform() 或特征检测),读取适当的环境变量并执行有根据的猜测。 这有一个缺点,即必须主动维护这段特定于平台的代码。我希望找到符合 os.tmpdir() 的东西
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多