在Node.js中,如果你在版本v12或更高版本中遇到“导出时没有定义模块”的错误,这通常是因为使用了不兼容的模块导入/导出语法。Node.js从v12开始支持ES模块,但需要正确配置。
ES模块:ES模块是ECMAScript标准的一部分,使用import
和export
关键字来导入和导出模块。
CommonJS模块:Node.js传统使用的模块系统,使用require
和module.exports
来导入和导出模块。
.js
文件视为CommonJS模块。要使用ES模块,需要将文件扩展名改为.mjs
或在package.json
中添加"type": "module"
。import
/export
和require
/module.exports
可能导致错误。.js
改为.mjs
。.js
改为.mjs
。package.json
:
在项目根目录的package.json
中添加"type": "module"
。package.json
:
在项目根目录的package.json
中添加"type": "module"
。import
/export
语法。import
/export
语法。假设你有一个项目结构如下:
my-project/
├── package.json
└── src/
├── index.js
└── module.js
package.json:
{
"type": "module",
"dependencies": {}
}
src/module.js:
export const foo = 'bar';
src/index.js:
import { foo } from './module.js';
console.log(foo); // 输出: bar
通过以上配置和代码,你可以确保在Node.js v12及以上版本中正确使用ES模块,避免“导出时没有定义模块”的错误。
领取专属 10元无门槛券
手把手带您无忧上云