我正在尝试使用npm为nodejs安装mysql模块。我使用Linux的Windows子系统来执行此操作。我已经成功安装了:
sudo npm install -g mysql
我的控制台返回:
+ mysql@2.16.0
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都可以正常工作。有什么想法吗?
答案 0 :(得分:0)
在全局安装软件包时,该软件包通常安装在Windows上的"GET /opt/www/location/normal/url/path HTTP/1.1" 404
或Unix系统中的%USERPROFILE%\AppData\Roaming\npm\node_module
中。请参阅this帖子。
现在在您的项目中,当您/usr/local/lib/node_modules
进行某些操作时,它将查找当前目录的require()
文件夹。因为您是全局安装的软件包,所以项目中不存在该软件包。
运行此命令会将包下载到您的项目的 node_modules
文件夹中,而不是 global node_modules
。 node_modules
还将把它写为对--save
的依赖项
package.json
根据我的经验,全局软件包似乎用于CLI或在命令提示符下运行脚本,而不用于代码中。