nodejs无法看到安装的mysql模块
我正在尝试使用npm为nodejs安装mysql模块。我正在使用windows子系统来执行此操作。我已成功安装使用:
sudo npm install -g mysql
我的控制台返回:
+ [email protected]
added 11 packages from 15 contributors in 5.779s
但是,使用以下方法导入模块时:
const mysql = require("mysql");
我收到错误:
module.js:550
throw err;
^
Error: Cannot find module 'mysql'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/c/Users/alesi/Documents/coding/Web/Portfolio/src/servers/server.js:7:15)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
其他模块如querystring和nodemailer工作正常。有任何想法吗?
回答如下:在全局安装软件包时,软件包通常安装在windows上的%USERPROFILE%\AppData\Roaming\npm\node_module
或unix系统中的/usr/local/lib/node_modules
中。见this帖子。
现在在你的项目中,当你require()
的东西,它正在寻找当前目录的node_modules
文件夹。因为您全局安装了包,所以它在项目中不存在。
运行此命令会将软件包下载到项目的node_modules
文件夹,而不是全局node_modules
。 --save
也会把它写成对package.json
的依赖
npm install --save mysql
根据我的经验,全局包似乎用于CLI或从命令提示符运行脚本,而不是用于代码。