Avatar ·

在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"。也许问题出在这里?请解释一下它们之间的区别,以及什么时候该用哪个。特别重要的是