Node.js 中找不到模块“X”错误 [已解决]

Node.js 中找不到模块“X”错误

Cannot find module ‘X’ error in Node.js

Node.js 中出现“找不到模块”错误的原因有多种:

  1. 忘记安装带有npm install module-name.
  2. node命令指向不存在的文件。
  3. 软件包版本过时,或者 IDE 或开发服务器出现故障。
  4. 忘记在 TypeScript 项目中安装包的类型定义。

找不到模块

要解决 Node.js 中的“找不到模块”错误,如果是第三方包,请确保安装错误消息中的包,例如
npm install module-name

如果本地模块出现错误,请确保将命令指向node
存在的文件。

如果您的错误消息包含第三方软件包名称,例如“找不到模块’uuid’”,那么您必须安装该uuid软件包。

在项目的根目录(文件所在的位置)中打开终端package.json
并运行以下命令。

# 👇️ if you use NPM npm install uuid # 👇️ only if you use TypeScript npm install --save-dev @types/uuid # ---------------------------------------- # 👇️ if you use YARN yarn add uuid # 👇️ only if you use TypeScript yarn add @types/uuid --dev

npm 安装模块

这会将第三方包添加到您的项目的依赖项中,您将能够导入它。

删除你的node_modules并重新安装你的依赖项

如果错误未解决,请尝试删除您的node_modules
package-lock.json(不是
package.json)文件,重新运行npm install并重新启动您的 IDE。

# 👇️ Windows - delete node_modules and package-lock.json rd /s /q "node_modules" del package-lock.json # 👇️ macOS/Linux - delete node_modules and package-lock.json rm -rf node_modules rm -f package-lock.json # 👇️ clean npm cache npm cache clean --force # 👇️ install packages npm install
如果错误仍然存​​在,请确保重新启动 IDE 和开发服务器。VSCode 经常出现故障,需要重新启动。

在 Node.js 中运行本地文件时找不到模块“X”

如果您在尝试运行本地文件时收到“找不到模块”错误,请确保传递给命令的路径node指向存在的文件。

例如,如果您运行node src/index.js,请确保路径
src/index.js指向现有文件。

运行本地文件节点js

如果由于找不到本地文件而收到错误,请尝试在命令Tab后使用键node来自动完成您尝试运行的模块的路径。

如果在开始输入模块路径时没有自动完成功能,则路径可能不正确。

指向您尝试运行的模块的路径是相对于您打开终端的目录的。

您可以尝试在包含您要运行的文件的目录中打开终端,然后将其直接传递给节点命令,例如 node index.js

使用全局包时找不到模块“X”

如果您需要全局安装一个包以便能够在每个目录的命令行上运行它,请使用该-g标志。

npm install -g some-package # 👇️ this links globally installed package to local node_modules folder npm link some-package

npm 全局安装包

如果软件包的全局安装失败,您可能必须运行前缀为(macOS 和 Linux)的命令sudo或以管理员身份启动命令提示符 (Windows)。
# 👇️ If you got permissions error, run with sudo sudo npm install -g some-package npm link some-package

npm link命令创建从全局安装的包到node_modules/
当前文件夹目录的符号链接。

您还可以使用该npx命令来避免全局安装该软件包。

npx create-react-app --version

使用 npx 命令前缀

您只需在命令前面加上npx.

使用 TypeScript 时找不到模块“X”

如果您在 TypeScript 项目中遇到错误,请通过运行安装包的类型定义npm install -D @types/some-package,并确保
文件
types中的数组tsconfig.json包含字符串node

tsconfig.json
{ "compilerOptions": { "types": [ "node" ] }, }

例如,此命令安装包的类型定义uuid

npm install -D @types/uuid

npm 安装类型定义

这应该可以修复错误,现在 TypeScript 应该能够找到特定模块的类型定义。

如果您的 Node.js 项目中仍然出现“找不到模块”package.json错误,请打开您的文件并确保它包含dependencies对象中包的名称。

包.json
{ // ... rest "dependencies": { "some-module": "^2.8.5", }, }

您可以尝试手动添加该行并重新运行npm install

npm install

或者安装最新版本的软件包:

npm install some-module@latest

如果错误仍未解决,请打开终端并通过运行以下命令检查是否安装了 Node.js:

node -v

获取节点js版本



如果您得到版本号,则说明您已经安装了 Node.js,否则请访问官方Node.js 下载页面来安装它。

确保项目的路径不包含哈希#符号或操作系统可能无法解决的任何其他特殊字符。例如,不要使用类似my-folder#3/my-project/my-file.js(contains a hash #) 的路径。

目录路径中的特殊字符可能会导致“找不到模块”错误。

如果您在连接到 Linux 服务器时遇到错误,请尝试退出服务器并通过 SSH 返回到该服务器。

如果在 macOS 上运行该命令后出现错误brew install yarn,请尝试发出以下命令。

# 👇️ use global directory to store packages yarn global add npm

NPM 可能会在不在您的 PATH 中的位置安装软件包

如果所有建议都没有帮助,则问题可能在于npm将软件包安装在 PATH 环境变量之外的位置。

在这种情况下,解决该错误的最简单方法是卸载 Node.js 并使用官方
Node.js 下载页面重新安装。

如果在安装过程中系统提示您是否要将Node.js和添加到 PATH 环境变量中,请务必勾选该选项。 npm

结论

要解决 Node.js 中的“找不到模块”错误,如果是第三方包,请确保安装错误消息中的包,例如
npm i module-name

如果本地模块出现错误,请确保将命令指向node
存在的文件。