为什么我在运行服务器时收到错误 [ERR_MODULE_NOT_FOUND]:无法找到模块

Ray*_*ond 5 node.js express nodemon

我正在做一个启动服务器。基本上它具有 Express 和 Nodemon 依赖项的初始设置。不幸的是,我ERR_MODULE_NOT_FOUND在运行时遇到yarn devnpm run dev 这是我拥有的代码和文件结构。 在此输入图像描述

Che*_*yDT 13

问题是缺少文件扩展名。导入需要如下所示:

import { sampleExport } from "../config/env.js";
//                                         ^^^
Run Code Online (Sandbox Code Playgroud)

import不使用与所require使用的相同的算法。相反,它根据 ECMAScript 模块规范工作,这需要明确的扩展。

ECMAScript 模块的 node.js 文档中也对此进行了解释:

import使用关键字解析相对或绝对说明符时,必须提供文件扩展名。目录索引(例如'./startup/index.js')也必须完全指定。

此行为import与浏览器环境中的行为相匹配(假定服务器是典型配置的)。


Jor*_*ejo 3

您需要添加.js扩展名index.js:

import { SampleExport } from "../path/file.js"
Run Code Online (Sandbox Code Playgroud)

在我看来,最好将 .env 文件与一些 npm 包甚至 json 文件一起使用。