Node.js中如何在Worker线程中使用ES6 import语法?
在Node.js Worker线程中使用ES6 Import的正确方式
要解决SyntaxError: Cannot use import statement outside a module错误,无需转译代码的核心是让Node.js将Worker线程文件识别为ES模块,以下是两种可行方案:
方案1:全局启用ES模块(推荐)
在项目根目录的package.json中添加"type": "module"字段,让Node.js默认把所有.js文件当作ES模块处理:
{ "type": "module" }
修改后,你的app.js和worker_thread.js中的import语法都会正常生效,Worker的创建代码无需改动。
方案2:单独指定Worker的模块类型
如果不想全局设置ES模块,可按以下步骤调整:
- 确保主文件(
app.js)被识别为ES模块:要么将其重命名为app.mjs,要么在package.json中添加"type": "module"(因为你的主文件已经用了import,这一步是必须的,否则主文件本身也会触发相同的语法错误)。 - 创建Worker时,在构造函数中传入
type: 'module'选项,明确指定该Worker文件为ES模块:
// 修改app.js中的Worker创建代码 const worker = new Worker('./worker_thread/index.js', { type: 'module' })
这样Worker线程就能正常使用ES6的import特性,同时兼容项目中其他CommonJS模块(如果存在的话)。
注意事项
确保你的Node.js版本在14.13.0及以上,该版本开始稳定支持ES模块在Worker线程中的使用。
内容的提问来源于stack exchange,提问作者Amitprj
相关产品推荐
相关产品推荐

