找不到 `mysql` 模块 node.js。

37

我是一个Node.js的新手。为了连接MySQL,我使用以下命令在Node上安装了mysql

npm install mysql

我在安装时没有遇到任何错误。然后,我尝试执行以下代码:

var mysql = require("mysql");

但是当我尝试执行时,它显示了以下错误。
C:\node\mysql>node app.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'mysql'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\node\mysql\app.js:1:75)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

我尝试了一些建议,例如使用全局安装mysql,

npm install -g mysql

但是什么都不起作用,请帮忙!!!

请注意我的工作环境,

操作系统:Windows7 Node 版本:0.10.15 NPM 版本:1.3.5


2
你是从运行 npm install mysql 的同一目录下运行脚本的吗? - Morgan ARR Allen
另外,使用“npm install -g”是全局安装。 - Morgan ARR Allen
@MorganARRAllen 如何在同一目录下运行它? - Stranger
1
尝试从与app.js相同的目录中运行npm ls。这将列出为该项目安装的npm模块。 - Jaime Morales
@JaimeMorales 它显示mysql@2.0.0-alpha8 ── bignumber.js@1.0.1 ── require-all@0.0.3在树下面 - Stranger
@Udhay,当您进入该目录中的节点REPL并键入var mysql = require('mysql')时,是否会出现相同的错误? - Jaime Morales
16个回答

19

我也遇到了同样的问题,发现是因为模块安装在以下位置:

./node_modules/node-mysql/node_modules/

所以,我将它们全部移动了:

mv ./node_modules/node-mysql/node_modules/* ./node_modules/


1
我使用npm install -g mysql安装了多次,但是我得到了以下结果:/usr/local/lib/node_modules/mysql# ls node_modules bignumber.js readable-stream require-all,我找不到node-mysql,请指导如何进行上述操作的路径,因为它无法正常工作。 - moderns
我使用的是mysql2 2.2.5版本,但它没有cardinal模块,而helper.js需要使用该模块。如何解决?错误:无法遍历依赖图:在“\node_modules\mysql2\lib”下找不到“cardinal”模块, 此模块是由node_modules\mysql2\lib\helpers.js引用的。 - Ashok kumar Ganesan

15
npm install mysql --save

这将更新您的package.json文件。


11

我的node已安装在C:\some-dir\nodejs-0.10.35\目录下。

首先切换到同一目录下已安装的nodecd C:\some-dir\nodejs-0.10.35

然后执行npm install mysql

我将应用程序放在同一目录下:C:\some-dir\nodejs-0.10.35\applications\demo.js

它运行良好。


我使用的是mysql2 2.2.5版本,该版本没有cardinal,但helper.js需要使用cardinal。如何解决这个问题?错误:无法遍历依赖图:在“\node_modules\mysql2\lib”中找不到模块“cardinal”,这是由node_modules\mysql2\lib\helpers.js所需的。 - Ashok kumar Ganesan

10

看起来您可能对如何使用 npm install 有些困惑。

npm install -g mysql 会全局安装而非像您所建议的本地安装。

npm install mysql 将会本地安装,将模块放置在./node_modules/mysql中。这意味着您需要从包含 node_modules 的同一目录运行脚本。


7
你可以通过以下方式解决这个问题:
ln -s /usr/local/lib/node_modules /YOURPROJECTFOLDER/node_modules

对我来说,这个真的解决了“找不到模块'mysql'”的错误。 - Parasu
实际上,另一种方法 ln -s /YOURPROJECTFOLDER/node_modules /usr/local/lib/node_modules 对我起了作用(Debian 10)。 - ᴍᴇʜᴏᴠ

3
我遇到了同样的问题(虽然我使用的是Windows 8)。我尝试了npm install mysqlnpm install -g mysql,但都没有起作用。
事实证明我需要打开“Node.js命令提示符”应用程序而不是常规命令提示符应用程序。一切运行得很顺利。
我不知道他们的命令提示符在底层做了什么,但我认为它与路径和环境变量有关。你可以试试看。

2

您可能需要更新package.json文件。请使用以下命令:

npm install mysql --save

1
在你添加这个答案之前整整5个月,完全相同的答案已经被添加了。 - Liam

1
我遇到了相同的问题。以下是我解决它的方法。
  1. 首先创建一个项目文件夹,例如(Users/home/proj)

  2. 进入项目文件夹。

  3. 运行npm init (这将创建packaje.json)。
  4. 运行npm install mysql
  5. 检查proj文件夹,您应该看到node_modules文件夹,展开node_modules,您应该看到mysql文件夹。
  6. 运行你的app.js。

1
npm install mysql2 --save

并且需要这个

var mysql = require("mysql2");

0
我注意到在执行npm install -g mysql命令后,mysql2被保存在node_modules中。只是做了一些修改。
require('mysql')

require('mysql2')

它起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接