Làm thế nào để lấy tên tệp, tên hàm 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 __FILE__, __LINE__ trong c
Làm thế nào để lấy tên tệp, tên hàm 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 __FILE__, __LINE__ trong c
Câu trả lời:
Node.js cung cấp một API tiêu chuẩn để làm như vậy: Đường dẫn .
Sau đó, lấy tên của tập lệnh hiện tại thật dễ dàng:
var path = require('path');
var scriptName = path.basename(__filename);
script.js, bạn sẽ nhận được script.js. Nếu bạn chỉ muốn có tên mà không có phần mở rộng, vì chúng tôi đang nói ở đây về một jstập lệnh mà bạn có thể sử dụng var scriptName = path.basename(__filename, '.js');hoặcvar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filenamekhông được định nghĩa trong Mô-đun ES6.
trong một mô-đun, bạn có thể thực hiện bất kỳ thao tác nào sau đây để nhận đườ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 không có đường dẫn hoặc phần mở rộng, bạn có thể làm như thế này.
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
var path = require('path');trước hoặc thay đổi nó thànhmodule.filename.slice(__filename.lastIndexOf(require('path').sep)+1, module.filename.length -3);
path.basename(module.filename, path.extname(module.filename))
Để chỉ lấy tên tệp. Không có mô-đun bổ sung chỉ đơn giản:
// abc.js
console.log(__filename.slice(__dirname.length + 1));
// abc
console.log(__filename.slice(__dirname.length + 1, -3));
'use strict';
const scriptName = __filename.split(/[\\/]/).pop();
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 hàm phân tách 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 tách là [\/](chia bởi /hoặc \) nhưng /ký hiệu phải được thoát ra để phân biệt với dấu chấm dứt regex /, vì vậy /[\\/]/.
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
path.basenameThay vào đó, bạn thực sự nên sử dụng (được tài liệu lần đầu tiên trong Node.js v0.1.25 ), 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 pathcâu trả lời ở trên .
javascript splitvà bắt đầu.
Bạn cũng có thể nhìn vào console-plus . Điều này thêm tên tệp và số vải 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.
Tôi biết đã lâu rồi, nhưng những gì tôi đã làm là như vậy __filename.split('\\').pop(). Thao tác này sẽ nhận được đường dẫn đầy đủ với tên tệp, chia nhỏ nó \sau đó lấy chỉ mục cuối cùng sẽ là tên tệp của bạn.
__filename.split('/').pop()
bạn có thể sử dụng chức năng này để lấy 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