找不到模块`mysql` node.js

时间:2013-08-08 19:25:40

标签: mysql node.js

我是nodejs的新手。为了连接mysql,我使用命令

在节点上安装了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 节点版本:0.10.15 NPM版本:1.3.5

16 个答案:

答案 0 :(得分:16)

我遇到了同样的问题,发现这是因为模块安装在:

./node_modules/node-mysql/node_modules/

所以,我只是把它们全部移动了:

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

答案 1 :(得分:7)

您可以使用

解决此问题
ln -s /usr/local/lib/node_modules /YOURPROJECTFOLDER/node_modules

答案 2 :(得分:7)

我的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

有效。

答案 3 :(得分:4)

看起来您可能会对npm install的工作方式感到困惑。

npm install -g mysql将全局安装,而不是像您建议的那样在本地安装。

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

答案 4 :(得分:2)

我遇到了同样的问题(授予我在Windows 8上)。我尝试了npm install mysqlnpm install -g mysql,但都没有效果。

原来我需要打开Node.js命令提示符&#39;应用程序而不是常规命令提示应用程序。一切都很好。

我不知道他们的命令提示在幕后做了什么,但我认为它与路径和环境变量有关。你可能想尝试一下。

答案 5 :(得分:1)

npm install mysql --save

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

答案 6 :(得分:1)

您可能必须更新package.json文件。使用以下命令

npm install mysql --save

答案 7 :(得分:0)

导航到主目录中的文件夹/node_modules,然后按以下命令安装mysql:sudo npm install mysql

这将在mysql文件夹中创建一个名为/node_modules的文件夹。

现在使用主文件夹中的node app.js命令运行您的应用程序。它应该工作并与mysal服务器建立连接。

答案 8 :(得分:0)

我有相同的错误,只需运行

npm install

将解决此问题。有时由于某种原因,mysql软件包已损坏,删除或丢失,只需在上面运行即可解决所有问题。

答案 9 :(得分:0)

我注意到npm install -g mysql上已将mysql2保存在node_modules中。刚刚更改

require('mysql')

require('mysql2')

它奏效了。

答案 10 :(得分:0)

我遇到了同样的问题。这是解决方法。

  1. 首先创建一个项目目录,例如(Users / home / proj)

  2. 转到然后proj文件夹。

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

答案 11 :(得分:0)

npm install mysql2 --save

并要求这个

var mysql = require("mysql2");

答案 12 :(得分:0)

npm安装MySQL --save

这是因为您尚未在软件包中安装MySQL。您正在导入此文件,而未在系统环境中安装MySQL

答案 13 :(得分:0)

如果使用 package.json,只需在下面添加并在您的项目中运行“npm install”。

{ "dependencies": { "mysql": "2.12.0" } }

答案 14 :(得分:-1)

我发现如果你跑的话会发生这种情况     npm安装 没有在package.json中定义的依赖关系...即

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
    </script>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<title>Form</title>
</head>

<body>
<form name="codexworld_frm" id="form1" method="post">
<div class="field_wrapper">
<div>
    <h3><a href="javascript:void(0);" class="add_button" title="Add Field">Add POS Item</a>    </h3>
</div>
</div>
<input type="submit" value="Submit">
</form>
</body>
<script type="text/javascript">
    // JavaScript Document
    var globalVariable;
$(document).ready(function jsonload(data){
    $.getJSON("http://localhost/test/php/psql.php", function(data)
             {
        var options = "";
        for (var i = 0; i < data.length; i++)
            {
                options +="<option value=\"" + data[i].POSID + "\">" +  data[i].Product + "</option>";
                //console.log(data[i].POSID + " " + data[i].Product);
            }

        var globalVariable=options;
        console.log(globalVariable);
    });
}); 


$(document).ready(function forms(){
        var maxField = 50; //Input fields increment limitation
        var addButton = $('.add_button'); //Add button selector
        var wrapper = $('.field_wrapper'); //Input field wrapper
        //var fieldHTML = {row :function(f){
                         //return '<h3><div>Item <input type="text" name="field_name['+f+'][]" value=""/>Material <input type="text" name="field_name['+f+'][]" value=""/><a href="javascript:void(0);" class="remove_button" title="Remove Field"><i class="material-icons" style="font-size:24px; color:blue">remove_circle</i></a></div></h3>';
                        //}};
        var fieldHTML = {row :function optionload(f){
            var local = globalVariable;
            console.log(local);
            //event.preventDefault();
                         return '<div>Item<input type="text" name="field_name['+f+'][]" value=""/>Material <select name="field_name['+f+'][]"><option value=""></option>' + local + '</select><a href="javascript:void(0);" class="remove_button" title="Remove Field"><i class="material-icons" style="font-size:24px; color:blue">remove_circle</i></a></div>';
        }};
        var x = 1; //initial field counter is 1
        $(addButton).click(function(){ //Once add button is clicked
            if(x < maxField){
                x++;
                $(wrapper).append(fieldHTML.row(x)); //Add field html
            }
            });
        $(wrapper).on('click', '.remove_button', function(e){ //Once remove button is clicked
                      e.preventDefault();
        $(this).parent('div').remove(); //remove field html
        x--;
        });
});
    </script>

    </html>

定义dependecies ..然后运行

[
  {
    "POSID": "104",
    "Product": "10 Case Header"
  },
  {
    "POSID": "105",
    "Product": "10 Case Header"
  }
]

答案 15 :(得分:-1)

这对我有用

  • 转到您的项目文件夹
  • 运行以下命令:npm install mysql