Node.js中'import ... ='仅可用于TypeScript文件错误求助
Node.js模块导入报错问题解决
错误原因
- 文件格式与模块系统冲突:
package.json设置了"type": "module"(启用ES模块),但入口文件是Index.cjs(CommonJS格式后缀),同时在.cjs文件里混用了ES模块的import语法,Node.js对两种模块的语法解析规则不同,直接触发语法报错。 - import语法错误:ES模块中不存在
import msg as msg这种写法,正确的命名导入语法是import { 导出名 } from '模块路径';另外代码里调用tm.msg,但未导入tm变量,变量名完全不匹配。 - 导出导入不匹配:
tm.js用CommonJS的exports.msg导出,但导入时没有使用对应正确的语法。
两种修复方案
方案一:统一使用ES模块
- 将
Index.cjs重命名为Index.js(package.json的"type": "module"会让所有.js文件按ES模块解析) - 修正
Index.js代码:
import { msg } from "./tm.js"; console.log(msg(5,6));
- (可选)把
tm.js改为ES模块风格导出,保持代码统一:
export function msg(a,b) { console.log("Function Imported") return a+b; }
方案二:统一使用CommonJS模块
- 编辑
package.json,删除"type": "module"字段(Node.js默认使用CommonJS) - 修正
Index.cjs代码为CommonJS语法:
const tm = require("./tm.js"); console.log(tm.msg(5,6));
tm.js代码无需修改,保持原有CommonJS导出即可。
内容的提问来源于stack exchange,提问作者Logic
相关产品推荐
相关产品推荐

