You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CommonJS与ES模块兼容故障:预构建脚本动态导入仍报错求助

问题分析与解决方案

错误根源

你遇到的错误并非来自script.mjs,而是出自./src/helpers/file-helpers.js:Node.js默认会把无特殊声明的.js文件当作CommonJS模块处理,但该文件内部使用了ES模块的import语法,直接触发了解析错误。动态导入无法解决这个问题——因为Node在加载file-helpers.js时,会先判断模块类型并解析语法,错误在动态导入执行前就已经发生了。

可行解决方案(不破坏现有项目)

方案1:给目标文件目录单独添加模块声明

在src/helpers目录下创建一个仅包含模块类型声明的package.json:

{"type": "module"}

Node.js会优先读取文件所在目录的package.json,这样该目录下的.js文件会被当作ES模块解析,既不会影响项目根目录的配置,也无需修改文件名。之后重新执行node script.mjs即可正常运行。

方案2:修改目标文件的语法(若允许)

如果有权修改file-helpers.js,可以将其中的ES模块语法替换为CommonJS语法:
把

import fs from 'fs/promises';

替换为

const fs = require('fs/promises');

内容的提问来源于stack exchange,提问作者Santiago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:07:38