Hướng dẫn nodejs get current file name - nodejs lấy tên tệp hiện tại

161

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào để có được tên tệp, tên chức năng và số dòng hiện tại?

Tôi muốn sử dụng nó cho mục đích ghi nhật ký/gỡ lỗi, tương đương với

this.filename;
module.filename;
__filename;
0,
this.filename;
module.filename;
__filename;
1 trong C

Hướng dẫn nodejs get current file name - nodejs lấy tên tệp hiện tại

Ball Matt

348K98 Huy hiệu vàng636 Huy hiệu bạc699 Huy hiệu Đồng98 gold badges636 silver badges699 bronze badges

Đã hỏi ngày 7 tháng 1 năm 2013 lúc 18:03Jan 7, 2013 at 18:03

Raxit shethraxit shethRaxit Sheth

2.3815 Huy hiệu vàng17 Huy hiệu bạc19 Huy hiệu đồng5 gold badges17 silver badges19 bronze badges

2

Node.js cung cấp một API tiêu chuẩn để làm như vậy: đường dẫn.

Lấy tên của tập lệnh hiện tại là dễ dàng:

var path = require('path');
var scriptName = path.basename(__filename);

Đã trả lời ngày 4 tháng 2 năm 2015 lúc 10:31Feb 4, 2015 at 10:31

Hướng dẫn nodejs get current file name - nodejs lấy tên tệp hiện tại

7

Trong một mô -đun, bạn có thể thực hiện bất kỳ điều nào sau đây để có được đường dẫn đầy đủ với tên tệp

this.filename;
module.filename;
__filename;

Nếu bạn chỉ muốn tên thực tế không có đường dẫn hoặc phần mở rộng, bạn có thể làm điều gì đó như thế này.

module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);

Đã trả lời ngày 22 tháng 9 năm 2013 lúc 10:02Sep 22, 2013 at 10:02

3

Để chỉ nhận tên tệp. Không có mô -đun bổ sung đơn giản:

// abc.js
console.log(__filename.slice(__dirname.length + 1));

 // abc
console.log(__filename.slice(__dirname.length + 1, -3));

Đã trả lời ngày 6 tháng 8 năm 2015 lúc 12:45Aug 6, 2015 at 12:45

Walrus Walrusred WalrusRed Walrus

4894 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges

4

'use strict';

const scriptName = __filename.split(/[\\/]/).pop();

Giải trình

console.log(__filename);
// 'F:\__Storage__\Workspace\StackOverflow\yourScript.js'
const parts = __filename.split(/[\\/]/);
console.log(parts);
/*
 * [ 'F:',
 *   '__Storage__',
 *   'Workspace',
 *   'StackOverflow',
 *   'yourScript.js' ]
 *
**/

Ở đây chúng tôi sử dụng chức năng phân chia với biểu thức chính quy làm tham số đầu tiên. Biểu thức chính quy mà chúng tôi muốn cho dấu phân cách là

this.filename;
module.filename;
__filename;
2 (được phân chia bởi
this.filename;
module.filename;
__filename;
3 hoặc
this.filename;
module.filename;
__filename;
4) nhưng ký hiệu
this.filename;
module.filename;
__filename;
3 phải được thoát để phân biệt với kết thúc Regex
this.filename;
module.filename;
__filename;
3, vì vậy
this.filename;
module.filename;
__filename;
7.
The regular expression we want for separator is
this.filename;
module.filename;
__filename;
2 (split by
this.filename;
module.filename;
__filename;
3 or
this.filename;
module.filename;
__filename;
4) but
this.filename;
module.filename;
__filename;
3 symbol must be escaped to distinguish it from regex terminator
this.filename;
module.filename;
__filename;
3, so
this.filename;
module.filename;
__filename;
7.

const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'

Đừng sử dụng cái này

Bạn thực sự nên sử dụng

this.filename;
module.filename;
__filename;
8 thay thế (lần đầu tiên được ghi lại trong Node.js v0.1.25), bởi vì nó xử lý tất cả các trường hợp góc mà bạn không muốn biết như tên tệp có dấu gạch chéo bên trong (ví dụ: tệp có tên "Foo \ Bar" trên UNIX) . Xem
this.filename;
module.filename;
__filename;
9 Trả lời ở trên.

Đã trả lời ngày 31 tháng 8 năm 2015 lúc 11:41Aug 31, 2015 at 11:41

ilyaigpetrovilyaigpetrovilyaigpetrov

3,4873 huy hiệu vàng27 Huy hiệu bạc46 Huy hiệu đồng3 gold badges27 silver badges46 bronze badges

3

Bạn cũng có thể nhìn vào bảng điều khiển. Điều này thêm tên tệp và vải lanh vào bất kỳ văn bản ghi nhật ký nào và có các màu khác nhau cho .log, .info và .Error.

Đã trả lời ngày 8 tháng 1 năm 2013 lúc 7:26Jan 8, 2013 at 7:26

Heinobheinobheinob

Phim huy hiệu vàng 18,8K33 gold badges40 silver badges59 bronze badges

1

Chà, tôi muốn sử dụng tên tệp làm thẻ cho logger để chuyển tiếp thẳng nhất và điều tôi muốn là:

__filename.substring(__dirname.length + 1, __filename.lastIndexOf("."))

Đã trả lời ngày 3 tháng 4 năm 2017 lúc 18:58Apr 3, 2017 at 18:58

TacB0sSTacB0sSTacB0sS

9,94612 Huy hiệu vàng72 Huy hiệu bạc117 Huy hiệu đồng12 gold badges72 silver badges117 bronze badges

0

Tôi biết đó đã là một thời gian dài, nhưng những gì tôi đã làm là

module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
0. Điều này sẽ có được đường dẫn đầy đủ với tên tệp, chia nó bằng
this.filename;
module.filename;
__filename;
4 sau đó nhận chỉ mục cuối cùng sẽ là tên tệp của bạn.

Đã trả lời ngày 10 tháng 7 năm 2018 lúc 10:20Jul 10, 2018 at 10:20

Hướng dẫn nodejs get current file name - nodejs lấy tên tệp hiện tại

2

Bạn có thể sử dụng chức năng này để nhận tên tệp:

/**
 * @description 
 * get file name from path
 * @param {string} path path to get file name
 * @returns {string} file name
 * @example 
 * getFileName('getFileName/index.js') // => index.js
 */
export default function getFileName(path) {
    return path.replace(/^.*[\\\/]/, '');
}

Nếu bạn sử dụng nodejs, bạn có thể cài đặt gói bao gồm chức năng này https://www.npmjs.com/package/jotils

Đã trả lời ngày 27 tháng 1 năm 2019 lúc 15:32Jan 27, 2019 at 15:32

Hướng dẫn nodejs get current file name - nodejs lấy tên tệp hiện tại

JoshjoshJosh

6687 Huy hiệu bạc13 Huy hiệu đồng7 silver badges13 bronze badges

Chỉ vì tôi không thấy nó được liệt kê ở đây, một tùy chọn khác là chỉ cần loại bỏ

module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
2 khỏi
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
3.

__filename.replace(`${__dirname}/`, '')

Tôi nghĩ rằng điều đó rất hữu ích nếu bạn không muốn nhập mô -đun

this.filename;
module.filename;
__filename;
9. Tuy nhiên, tôi tin rằng
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
5 là thích hợp nhất.

Đã trả lời ngày 9 tháng 1 lúc 19:06Jan 9 at 19:06

RoiroiRoi

1.55716 huy hiệu bạc19 Huy hiệu đồng16 silver badges19 bronze badges

Làm cách nào để có được đường dẫn hiện tại trong Node JS?

Chúng ta có thể có được đường dẫn của tập lệnh hiện tại trong nút.JS bằng cách sử dụng các biến phạm vi mô -đun __dirname và __filename.__dirname: Nó trả về tên thư mục của mô -đun hiện tại trong đó tập lệnh hiện tại được đặt.__filename: Nó trả về tên tệp của mô -đun hiện tại.using __dirname and __filename module scope variables. __dirname: It returns the directory name of the current module in which the current script is located. __filename: It returns the file name of the current module.

Làm cách nào để nhận tên tệp FS?

Fs.basename (đường dẫn): Trả về tên tệp với phần mở rộng.FS.BASENAME (PATH): Trả về tên tệp mà không có phần mở rộng. basename(path) : returns the file name with extension. Fs. basename(path) : returns the file name without extension.

__ dirname trong nút là gì?

Nó cung cấp cho thư mục làm việc hiện tại của nút.JS quá trình.__dirname: Đây là một biến cục bộ trả về tên thư mục của mô -đun hiện tại.Nó trả về đường dẫn thư mục của tệp JavaScript hiện tại.a local variable that returns the directory name of the current module. It returns the folder path of the current JavaScript file.

Dirname là gì?

Con đường.Phương thức dirname () trả về các thư mục của đường dẫn tệp.returns the directories of a file path.