为简单应用创建相对路径

问题描述

index.js

var fs = require('fs');

var obj = JSON.parse(fs.readFileSync('/Users/amelie/Documents/project/config.json','utf8'));

我使用 $pkg index.js 将此文件编译为名为 test-macOS 的应用程序。该应用程序从项目文件夹中名为 config.json 的文件中连续读取数据。

但是,项目文件夹中的 config.json 文件和 test-macOS 文件将被其他用户下载(通过下载项目文件夹)。这将更改应用程序必须读取的文件 config.json 的绝对路径 /Users/amelie/Documents/project/config.json'。有没有办法为所有用户定义一个相同的路径,以便所有下载此项目文件夹的用户都可以使用该应用程序连续读取此文件

我尝试使用相对路径 ./config.JSON 但似乎一旦我编译 index.js 就会出错

/Users/amelie/Documents/project/test-macos ;

exit; internal/fs/utils.js:312 throw err; ^ 

Error: ENOENT: no such file or directory,open './config.JSON 

就像如果 test-macOS 文件和 config.json 不在同一个目录中(但是它们在同一个“项目”文件夹中)

解决方法

在 nodejs 中,您可以使用一个名为 __dirname 的环境变量,它为您提供所在目录的绝对路径。因此,如果您尝试获取 config.json 的路径并且它位于与您的项目相同的目录,它应该类似于 __dirname + "/config.json" (目录名前2个下划线)