如何从js文件中获取所有函数及其参数?javascript

Shu*_*kar 5 javascript automation node.js

有一个test.js:

const add = (x,y) => {
    return x+y;
}

const multiply = (x,y,z) => {
    return x*y*z;
}
Run Code Online (Sandbox Code Playgroud)

我想从index.js读取此test.js并打印其所有函数名称和参数;

const fs = require("fs");

let file = fs.readFileSync("./test.js", "utf8");

let functionArg = "Do some operations"

console.log(functionArg)

//Result:
//  add : [x,y]
//  multiply : [x,y,z]
Run Code Online (Sandbox Code Playgroud)

没有module.exports。
是否有可能读取js文件并返回其所有功能及其参数。

TGr*_*rif 3

您可以借助esprima等 JavaScript 解析器来获取函数及其参数。

const fs = require("fs");
const esprima = require('esprima');

let file = fs.readFileSync("./test.js", "utf8");

let functionArg = esprima.parseScript(file);

functionArg.body.forEach(el => {
  let variableDeclarator = el.declarations[0]
  let params = []
  variableDeclarator.init.params.forEach(arg => {
    params.push(arg.name)
  })
  console.log(variableDeclarator.id.name, ' : ', [params.join()])
})

//Result:
// add  :  [ 'x,y' ]
// multiply  :  [ 'x,y,z' ]
Run Code Online (Sandbox Code Playgroud)