Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用NodeJS运行文件夹中的所有javascript文件?_Javascript_Node.js - Fatal编程技术网

如何使用NodeJS运行文件夹中的所有javascript文件?

如何使用NodeJS运行文件夹中的所有javascript文件?,javascript,node.js,Javascript,Node.js,我希望有一个包含javascript文件的文件夹,并且能够以编程方式异步运行其中的任何内容。例如: async.each(folder_files, function(content, cb){ run_script(content); cb(); },function(err){ if(err){ console.log(err); }else{ console.log("All scripts ran succesfully

我希望有一个包含javascript文件的文件夹,并且能够以编程方式异步运行其中的任何内容。例如:

async.each(folder_files, function(content, cb){
    run_script(content);

    cb();
},function(err){
    if(err){
        console.log(err);
    }else{
        console.log("All scripts ran succesfully :D");
    }
});
这可能吗


编辑:只是澄清一下,我希望能够使用任意数量的脚本更改文件夹内容,并通过主JS文件运行它们。

这里有一个使用的简单解决方案,但您需要将所有脚本放在主文件旁边的
脚本
文件夹中

const fs = require('fs')
const exec = require('child_process').exec

const async = require('async') // npm install async 

const scriptsFolder = './scripts/' // add your scripts to folder named scripts

const files = fs.readdirSync(scriptsFolder) // reading files from folders
const funcs = files.map(function(file) {
  return exec.bind(null, `node ${scriptsFolder}${file}`) // execute node command
})

function getResults(err, data) {
  if (err) {
    return console.log(err)
  }
  const results = data.map(function(lines){
    return lines.join('') // joining each script lines
  })
  console.log(results)
}

// to run your scipts in parallel use
async.parallel(funcs, getResults)

// to run your scipts in series use
async.series(funcs, getResults)

下面是一个使用的简单解决方案,但您需要将所有脚本放在主文件旁边的
scripts
文件夹中

const fs = require('fs')
const exec = require('child_process').exec

const async = require('async') // npm install async 

const scriptsFolder = './scripts/' // add your scripts to folder named scripts

const files = fs.readdirSync(scriptsFolder) // reading files from folders
const funcs = files.map(function(file) {
  return exec.bind(null, `node ${scriptsFolder}${file}`) // execute node command
})

function getResults(err, data) {
  if (err) {
    return console.log(err)
  }
  const results = data.map(function(lines){
    return lines.join('') // joining each script lines
  })
  console.log(results)
}

// to run your scipts in parallel use
async.parallel(funcs, getResults)

// to run your scipts in series use
async.series(funcs, getResults)

你说“异步运行它们”是什么意思?你是说一个接一个地“按顺序”运行,还是希望它们并行运行而不影响主程序的运行。两个截然不同的问题。另外,它们是否希望作为node.js模块运行?您希望他们共享对主JS文件中全局空间的访问权限吗?或者与主JS文件隔离?你想从他们那里得到什么结果吗?你关心它们的运行顺序吗?不,不关心顺序,异步或同步现在没有那么重要,不需要返回结果,不需要回调,我只想让它在根目录下的文件夹中查找具有通用名称的文件。你说“异步运行它们”是什么意思?你是说一个接一个地“按顺序”运行,还是希望它们并行运行而不影响主程序的运行。两个截然不同的问题。另外,它们是否希望作为node.js模块运行?您希望他们共享对主JS文件中全局空间的访问权限吗?或者与主JS文件隔离?你想从他们那里得到什么结果吗?你关心它们的运行顺序吗?不,不关心顺序,异步或同步现在没有那么重要,不需要返回结果,不需要回调,我只希望它在根目录下的文件夹中查找具有通用名称的文件