改为ES module(ESM)环境中应该如何修改
时间: 2024-11-03 16:24:01 浏览: 30
要将一个使用CommonJS(`require()`和`module.exports`)的项目转换为ES Module (ESM),您需要做以下几个步骤[^1]:
1. **替换模块导入/导出**:
- 将 `require('dependency')` 替换成 `import dependency from 'dependency'`。
- 如果有 `module.exports = { ... }` 的情况,应改写为 `export default { ... }`。
2. **文件扩展名更改**:
- 把`.js`文件更改为`.mjs`,以指示这是一个ESM模块。
3. **运行环境兼容**:
- 对于Node.js 14及更高版本(v16.4.0及以上),ESM是默认启用的,可以直接运行。
- 对于早期版本(如v13.2.0试验性支持),可能需要使用 `--experimental-modules` 参数,如 `node --experimental-modules yourfile.mjs`。
示例(假设原有文件`old_commonjs.js`):
```javascript
// old_commonjs.js
const dependency = require('dependency');
exports.myFunction = function() {
// ...
};
```
转换为ESM (`new_esm_module.mjs`):
```javascript
// new_esm_module.mjs
import dependency from 'dependency';
export default {
myFunction: function() {
// ...
}
};
```
请注意,如果您的项目依赖于某些不支持ESM的库,可能还需要采取其他措施,比如使用`@babel/preset-env`或其他编译器来逐步迁移。
阅读全文