Как сохранить имя функции из исходного кода eslint? - PullRequest
0 голосов
/ 30 мая 2020

Я хочу хранить реализации Javascript методов в базе данных. Чтобы сохранить функцию в виде проанализированной строки JSON, я использую модуль SourceCode от ESlint. В моем коде есть что-то вроде этого:

 let r = require(file);
 mapObj.set(id, {
        id,
        fn: SourceCode.splitLines(r.toString()),
      });

Это правильно работает для объявлений функций, ie:

function foo() {}

Но для выражений функций ie: стрелочные функции, выражения функций:

const foo = (a, b, c) => {}
const foo = function(a,b,c) {}

имя функции не сохраняется и выглядит так:

 "(a, b, c) => {",
 "  .....
  "}"

Если это конфигурация из ESLint, я не смог найти это. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 30 мая 2020

Если у функции есть имя, вы можете найти его в свойстве .name.

Например,

 let r = require(file);
 mapObj.set(id, {
        id,
        name: r.name,
        fn: SourceCode.splitLines(r.toString()),
      });

См .: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name

const foo1 = (a, b, c) => {}
const foo2 = function(a,b,c) {}

console.log(foo1.name, foo1.toString());
console.log(foo2.name, foo2.toString());
...