Ответ
В Node.js существует две основные системы модулей: CommonJS (стандартная, историческая) и ES Modules (современная). Способ подключения зависит от используемой системы.
1. CommonJS (использует require()):
Это классический способ, используемый по умолчанию в файлах с расширением .js или .cjs.
// Подключение встроенного (core) модуля
const fs = require('fs');
// Подключение стороннего модуля из node_modules
const express = require('express');
const { Model } = require('sequelize'); // Деструктуризация
// Подключение локального файла
const myUtility = require('./utils/myUtility');
const config = require('../config'); // Ищет config.js или config/index.js
2. ES Modules (использует import/export):
Чтобы использовать ES Modules, нужно либо указать "type": "module" в package.json, либо использовать расширение .mjs для файлов.
// package.json: { "type": "module" }
// Подключение встроенного модуля (может потребовать префикс 'node:')
import fs from 'fs/promises';
import { createServer } from 'node:http';
// Подключение стороннего модуля
import express from 'express';
import { Router } from 'express';
// Подключение локального файла
import { helperFunc } from './lib/helpers.js'; // Расширение .js обязательно
В одном проекте можно использовать обе системы, но для этого требуется аккуратная настройка и понимание различий в разрешении путей.