nodejs看不到已安装的mysql模块

时间:2019-02-27 16:57:33

标签: javascript mysql node.js npm windows-subsystem-for-linux

我正在尝试使用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都可以正常工作。有什么想法吗?

1 个答案:

答案 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_modulesnode_modules还将把它写为对--save的依赖项

package.json

根据我的经验,全局软件包似乎用于CLI或在命令提示符下运行脚本,而不用于代码中。