47

如何获取 NodeJS 应用程序中正在执行的脚本的文件名?

4

3 回答 3

54

您可以使用变量__filename

http://nodejs.org/docs/latest/api/globals.html#globals_filename

于 2012-12-11T21:48:32.827 回答
25

使用模块的basename方法path

var path = require('path');
var filename = path.basename(__filename);
console.log(filename);

是上面示例的文档。

正如 Dan 指出的,Node 正在开发带有“--experimental-modules”标志的ECMAScript 模块。节点 12 仍然支持__dirname__filename同上。


如果您使用--experimental-modules标志,则有另一种方法

另一种方法是获取当前 ES 模块的路径

const __filename = new URL(import.meta.url).pathname;

对于包含当前模块的目录:

import path from 'path';

const __dirname = path.dirname(new URL(import.meta.url).pathname);
于 2015-06-11T21:27:20.933 回答
22

你需要使用process.argv. 其中将包含从命令行执行的脚本的名称,该名称可能与您在__filename. 哪个合适取决于您的需求。

http://nodejs.org/docs/latest/api/process.html#process_process_argv

于 2012-12-11T21:48:51.667 回答