如何在Node.js中获取脚本的路径?
我知道有流程。Cwd,但它只引用调用脚本的目录,而不是脚本本身。例如,假设我在/home/kyle/目录下,然后运行以下命令:
node /home/kyle/some/dir/file.js
如果我调用process.cwd(),我会得到/home/kyle/,而不是/home/kyle/some/dir/。有办法得到那个目录吗?
如何在Node.js中获取脚本的路径?
我知道有流程。Cwd,但它只引用调用脚本的目录,而不是脚本本身。例如,假设我在/home/kyle/目录下,然后运行以下命令:
node /home/kyle/some/dir/file.js
如果我调用process.cwd(),我会得到/home/kyle/,而不是/home/kyle/some/dir/。有办法得到那个目录吗?
当前回答
基本上你可以这样做:
fs.readFile(path.resolve(__dirname, 'settings.json'), 'UTF-8', callback);
使用resolve()而不是连接'/'或'\',否则您将遇到跨平台问题。
注意:__dirname是模块或包含脚本的本地路径。如果你正在编写一个插件,需要知道主脚本的路径,它是:
require.main.filename
或者,获取文件夹名称:
require('path').dirname(require.main.filename)
其他回答
基本上你可以这样做:
fs.readFile(path.resolve(__dirname, 'settings.json'), 'UTF-8', callback);
使用resolve()而不是连接'/'或'\',否则您将遇到跨平台问题。
注意:__dirname是模块或包含脚本的本地路径。如果你正在编写一个插件,需要知道主脚本的路径,它是:
require.main.filename
或者,获取文件夹名称:
require('path').dirname(require.main.filename)
我又看了一遍文件后找到的。我要找的是__filename和__dirname模块级变量。
__filename是当前模块的文件名。这是当前模块文件的解析绝对路径。(例:/ home /凯尔/一些/ dir / file.js) __dirname是当前模块的目录名。(例:/ home /凯尔/一些/ dir)
你可以使用process.env.PWD来获取当前应用程序的文件夹路径。
var settings =
JSON.parse(
require('fs').readFileSync(
require('path').resolve(
__dirname,
'settings.json'),
'utf8'));
Index.js中包含要导出的模块的任何文件夹
const entries = {};
for (const aFile of require('fs').readdirSync(__dirname, { withFileTypes: true }).filter(ent => ent.isFile() && ent.name !== 'index.js')) {
const [ name, suffix ] = aFile.name.split('.');
entries[name] = require(`./${aFile.name}`);
}
module.exports = entries;
这将找到当前目录的根目录下的所有文件,要求并导出与文件名干相同的导出名称的每个文件。