Відповіді:
Node.js надає стандартний API для цього: Шлях .
Отримати ім’я поточного сценарію тоді просто:
var path = require('path');
var scriptName = path.basename(__filename);
script.jsви отримаєте script.js. Якщо ви хочете мати ім'я лише без розширення, як ми говоримо тут про jsсценарій, який ви можете використовувати, var scriptName = path.basename(__filename, '.js');абоvar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filenameне визначено в модулі ES6.
CommonJSзмінні недоступні в модулях ES. Еквіваленти __filenameта __dirnameможна створити всередині кожного файлу через import.meta.url.
всередині модуля ви можете виконати будь-яке з наступних дій, щоб отримати повний шлях з назвою файлу
this.filename;
module.filename;
__filename;
Якщо ви просто хочете, щоб справжнє ім’я не було шляху чи розширення, ви можете зробити щось подібне.
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
var path = require('path');module.filename.slice(__filename.lastIndexOf(require('path').sep)+1, module.filename.length -3);
path.basename(module.filename, path.extname(module.filename))
Щоб отримати лише ім'я файлу. Немає додаткового модуля просто:
// 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' ]
*
**/
Тут ми використовуємо роздільну функцію з регулярним виразом як перший параметр.
Регулярний вираз, який ми хочемо для роздільника, є [\/](розділений на /або \), але /символ повинен бути уникнути, щоб відрізнити його від термінатора регулярних виразів /, так /[\\/]/.
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
Ви дійсно повинні використовувати path.basenameзамість цього (вперше задокументовано в Node.js v0.1.25 ), оскільки він обробляє всі кутові випадки, про які ви не хочете знати, як імена файлів з косою рисою всередині (наприклад, файл з назвою "foo \ bar" на unix). Дивіться pathвідповідь вище .
javascript splitі розпочати.
Ви також можете подивитися на консоль плюс . Це додає ім'я файлу та кількість ліній до будь-якого тексту журналу та має різні кольори для .log, .info та .error.
Я знаю, що це вже давно, але те, що я зробив, це __filename.split('\\').pop(). Ви отримаєте повний шлях з назвою файлу, розділіть його на \потім отримайте останній індекс, який буде вашим ім'ям файлу.
__filename.split('/').pop()
Ви можете використовувати цю функцію, щоб отримати ім'я файлу:
/**
* @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(/^.*[\\\/]/, '');
}
якщо ви використовуєте nodejs, ви можете встановити пакет, що включає цю функцію https://www.npmjs.com/package/jotils