由于Node.js 13.x及以上版本默认支持ECMAScript模块(ESM)加载,因此您的Node.js应用程序中的模块应该使用ESM语法来引用和导出。这包括使用'import”语句而不是'require”。然而,在某些情况下,您可能需要使用 'require” 语句,例如访问Node.js内置模块(例如fs和path)。在这种情况下,您可以使用以下方法在应用程序中解决该问题:
将您的JavaScript文件扩展名更改为.mjs(ESM模块文件扩展名),其中包含以下代码:
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
// code that uses require
在这种情况下,您仍然可以使用'require”语句,但需要借助'createRequire”函数将其包装在一个ESM导入语句内。这使得Node.js可以'require”语句视为ESM导入语句。