const { exec } = require('child_process');
const path = require('path'):
exec('hexo g', { cwd: path.join(process.cwd(), 'scripts') }, (err, stdout, stderr) => {
if(err) {
console.log(err);
return;
console.log(`stdout: ${stdout}`);
execSync
是exec
的同步版本,不过无论是execSync
还是exec
,得到的结果都是字符串或者Buffer对象,一般需要进一步处理。
请参考:exec
具体配置,execSync
具体配置
二、execFile
与execFileSync
这两个函数的作用是执行一个可执行文件,看下面的实例:
const { execFile, execFileSync } = require('child_process');
execFile('example.py', [], (err, stdout, stderr) => {
if(err) {
console.log(err);
return;
console.log(`stdout: ${stdout}`);
const stdout = execFileSync('node', ['-v']);
console.log(stdout);
跟exec
类似,第一个参数是要执行的文件路径,第二个是参数数组,第三个是配置,第四个是回调函数,当然,除了第一个之外都是可以省略的
注意:被执行的文件一定要有可执行权限,如果是类似.py
类的特定语言的脚本,一定在开头指定解释器程序路径
请参考:execFile配置,execFileSync配置
三、spawn
与spawnSync
child_process
模块中所有函数都是基于spawn
和spawnSync
函数的来实现的,换句话来说,spawn
和spawnSync
函数的配置是最完全的,其它函数都是对其做了封装和修改。下面我们来重点讲解一下:
spawn
函数原型是这样的:child_process.spawn(command[, args][, options])
它使用指定的命令行参数创建新进程,spawn 会返回一个带有stdout和stderr流的对象。你可以通过stdout流来读取子进程返回给Node.js的数据。stdout拥有'data'
,'end'
以及一般流所具有的事件。当你想要子进程返回大量数据给Node时,比如说图像处理,读取二进制数据等等,你最好使用spawn方法
const {spawn} = require('child_process');
const fs = require('fs');
const spawnObj = spawn('ping', ['127.0.0.1'], {encoding: 'utf-8'});
spawnObj.stdout.on('data', function(chunk) {
console.log(chunk.toString());
spawnObj.stderr.on('data', (data) => {
console.log(data);
spawnObj.on('close', function(code) {
console.log('close code : ' + code);
spawnObj.on('exit', (code) => {
console.log('exit code : ' + code);
fs.close(fd, function(err) {
if(err) {
console.error(err);
原文发表在我的博客 Node.js 执行系统命令 | 以太空间 欢迎访问我的博客首页以太空间 | 陈文岗的博客 我们在使用Node.js的时候总有一些时候需要执行一些系统命令,与系统做一些交互,或者调用其他语言,这个时候该怎么做呢? 当然是使用child_process模块了,这个模块翻译过来就是子进程,当然正如其名,这个模块主要是通过产生子进程来发挥作用,下面我们就用实...
11. node多进程之同步方法——execSync、execFileSync、spawnSync
execSync、execFileSync同步方法直接返回内容,内容是Buffer类型
spawnSync返回的是一个对象,里面有stdout,output等等,这几个属性内容是buffer类型,还有status,pid等等
同步方法的错误用try…catch(err){…}来捕获
const cp = require('child_process')
// 同步方法直接返回内容,内容是Buffer类型
在特定的
Node.js版本上运行任何命令。
与nvm
exec不同,它可以:一次运行多个
Node.js版本,可以以编程方式运行,速度提高5倍,不需要为每个Node版本单独
执行安装步骤。在特定的
Node.js版本上运行任何命令。
与nvm
exec不同,它可以:一次运行多个
Node.js版本,可以以编程方式运行,速度提高5倍,并且每个Node版本都不需要单独的安装步骤,可以运行主要版本的最新次要版本/修补程序版本,从而自动在Windows上运行。
无需以管理员身份运行。
不需要将Bash作为节点模块安装(与通过curl下载的Bash安装脚本相反),nve
执行单个文件或命令。
前几篇中,我们了解过execFile,spawn、exec几种创建子进程的方法。它们所创建的子进程,都是异步的。
而有时候,需要同步的执行,即:希望得到它们的执行结果,再继续运行程序。那么该如何实现呢?
1、execFileSync
它是execFile的同步方法,使用方法如下:
var ex = require("child_process").execFileSync;
var s...
重要说明:该存储库不再维护。
现在,节点v0.12内置了相同的功能: ://nodejs.org/api/child_process.html#child_process_child_process_exec_execsync_command_options
执行同步
同步执行shell命令。 将此用于迁移脚本,cli程序,而不用于常规服务器代码。
安装npm(节点程序包管理器)
$ curl http://npmjs.org/install.sh | sh
安装执行同步
$ cd /path/to/your/project
$ [sudo] npm install exec-sync
从node.js使用exec-sync
警告:仅用于用node编写的特殊操作或命令行脚本。 请勿将其用于常规服务器代码,否则将破坏服务器的响应能力。
var execSync = requ
const { execSync } = require('child_process');
execSync('./node_modules/.bin/babel plugins/router-generator/src --out-dir plugins/router-generator/dist')
node执行该代码,在Mac执行没问题,但在win10执行,则报错:
'.' 不是内部或外...
其实,对于这样的需求,我是在工作看到我们前段老大,再给我看vue项目的时候,我发现,他在vue项目里面有一个server.js的文件(跟package.json放在同级目录),我打开一看,
nodejs。一般前端都是,采用
nodejs作为后端写接口,调试我们自己的页面。而一般我们都是,先开启vue项目,另外再开启一个
nodejs服务,但是 能不能输入一条命令,开启两个服务呢?
下面就是关键:
Node.js中的同步执行
每个人都喜欢NodeJS,部分原因是它拥护无阻塞的哲学。 交互是异步的,因此从理论上讲,它允许更快的全方位处理。 当为我即将进行的重新设计创建简单的脚本时,我发现异步性……很烦人。 我通过Node.js运行的服务器执行Swift陷入回调地狱。 幸运的是,我找到了一个名为exec-sync的好程序包,它允许同步执行Shell命令,这样我就不会发现很多回调。
Node.js版本8及更高版本: $ npm install cross-spawn
Node.js版本7及以下版本: $ npm install cross-spawn@6
在Windows上使用Spawn时,节点出现问题:
使用运行命令时遇到问题
使用posix相对路径运行命令时遇到问题(例如: ./my-folder/my-executable )
有一个用命令垫片(在文件node_modules/.bin/ ),其中包括引号和括号参数会导致
在节点<v4.8上没有options
nodejs命令行执行程序by Peter Benjamin 彼得·本杰明(Peter Benjamin)
在NodeJS中编写命令行应用程序 (Writing Command-Line Applications in NodeJS)
With the right packages, writing command-line apps in NodeJS is a breeze. 有了合适的软...
Node.js是一种很流行的JavaScript运行环境,它可以让我们使用JavaScript编写服务器端应用程序和命令行工具。如果你想在自己的电脑上运行Node.js,那么你需要配置Node.js环境。以下是Node.js环境配置的步骤:
1. 下载Node.js安装包:可以在Node.js官网上下载Node.js的安装包,也可以使用nvm(Node Version Manager)工具进行安装。
2. 安装Node.js:运行下载的安装包,按照提示进行安装。
3. 配置环境变量:将Node.js的可执行文件目录添加到系统的环境变量中,这样就可以全局运行Node.js命令了。通常来说,Windows系统的环境变量设置路径为“计算机属性 - 高级系统设置 - 环境变量”,在“系统变量”中找到“Path”选项,编辑并添加Node.js的可执行文件目录即可。
4. 验证Node.js安装是否成功:打开命令行工具,输入“node -v”,如果成功返回版本号,则说明Node.js安装成功。
除了上述基本的配置步骤,Node.js的其他配置也很重要。比如,可以选择配置npm(Node.js Package Manager),通过npm可以方便地安装和管理node.js模块。此外,还可以安装一些常用的node.js模块,如Express.js等。
总之,Node.js环境配置需要注意一些基本步骤和细节,这样才能保证程序正确运行,提高开发效率。