在TypeScript/Node.js中,require(x)和import x有什么区别?
大家好!我开始学习TypeScript和Node.js,对两种模块导入方式的区别感到困惑。
在旧教程中,我到处都能看到这样的代码:
```typescript
const express = require('express');
const fs = require('fs');
```
但在新的TypeScript项目中,他们这样写:
```typescript
import express from 'express';
import * as fs from 'fs';
```
我试图自己搞清楚,但反而更糊涂了。例如,我尝试这样做:
```typescript
// 旧方式
const myModule = require('./myModule');
// 新方式
import myModule from './myModule';
```
两者似乎都能工作,但有时require会报错“Cannot find module”,而import却能正常工作。或者反过来——import报错“Module '".../myModule"' has no default export”,而require却正常。
我使用的是Node.js 18和TypeScript 5。在tsconfig.json中,我设置了"module": "commonjs"。也许问题出在这里?请解释一下它们之间的区别,以及什么时候该用哪个。特别重要的是