Node.js 中找不到模块“X”错误
Cannot find module ‘X’ error in Node.js
Node.js 中出现“找不到模块”错误的原因有多种:
- 忘记安装带有
npm install module-name
. - 将
node
命令指向不存在的文件。 - 软件包版本过时,或者 IDE 或开发服务器出现故障。
- 忘记在 TypeScript 项目中安装包的类型定义。
要解决 Node.js 中的“找不到模块”错误,如果是第三方包,请确保安装错误消息中的包,例如
npm install module-name
。
如果本地模块出现错误,请确保将命令指向node
存在的文件。
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
删除你的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
在 Node.js 中运行本地文件时找不到模块“X”
如果您在尝试运行本地文件时收到“找不到模块”错误,请确保传递给命令的路径node
指向存在的文件。
例如,如果您运行node src/index.js
,请确保路径
src/index.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
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
.
使用 TypeScript 时找不到模块“X”
如果您在 TypeScript 项目中遇到错误,请通过运行安装包的类型定义npm install -D @types/some-package
,并确保
文件types
中的数组tsconfig.json
包含字符串node
。
{ "compilerOptions": { "types": [ "node" ] }, }
例如,此命令安装包的类型定义uuid
。
npm install -D @types/uuid
如果您的 Node.js 项目中仍然出现“找不到模块”package.json
错误,请打开您的文件并确保它包含dependencies
对象中包的名称。
{ // ... rest "dependencies": { "some-module": "^2.8.5", }, }
您可以尝试手动添加该行并重新运行npm install
。
npm install
或者安装最新版本的软件包:
npm install some-module@latest
如果错误仍未解决,请打开终端并通过运行以下命令检查是否安装了 Node.js:
node -v
如果您得到版本号,则说明您已经安装了 Node.js,否则请访问官方Node.js 下载页面来安装它。
确保项目的路径不包含哈希#
符号或操作系统可能无法解决的任何其他特殊字符。例如,不要使用类似my-folder#3/my-project/my-file.js
(contains a hash #
) 的路径。
目录路径中的特殊字符可能会导致“找不到模块”错误。
如果在 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
存在的文件。