ES6导入语法咨询及child_process模块exec方法导入转换问题
没问题,我来帮你理清楚ES6的导入语法,以及如何转换你提到的那段CommonJS代码。
ES6导入语法基础
ES6的import语法主要有几种常用形式,对应不同的导出场景:
- 默认导入:用于导入模块的默认导出项,语法是
import 自定义名称 from '模块路径'; - 命名导入:用于导入模块中明确导出的特定成员,语法是
import { 成员名称 } from '模块路径'; - 导入整个模块:把整个模块作为一个对象导入,语法是
import * as 模块别名 from '模块路径';
转换你的CommonJS代码
你提到的var exec = require('child_process').exec是CommonJS的写法,它的作用是加载child_process模块,然后取出模块对象上的exec方法。
在ES6中,对应的正确写法是命名导入,直接提取exec成员:
import { exec } from 'child_process';
这样exec就直接是你需要的那个函数了,和原来的代码效果完全一致。
你之前尝试的import exec from 'child_process'其实是默认导入,这种写法会把child_process模块的默认导出项赋值给exec。但child_process的默认导出是整个模块对象,所以如果用这种写法,你需要通过exec.exec才能访问到目标方法,显然不如命名导入直接。
另外,如果你需要同时使用模块里的其他方法(比如spawn),也可以一次性导入多个成员:
import { exec, spawn } from 'child_process';
或者导入整个模块对象,按需访问:
import * as childProcess from 'child_process'; // 使用时:childProcess.exec(...)
内容的提问来源于stack exchange,提问作者fardin
相关产品推荐
相关产品推荐

