Javascript 尚未为上下文加载模块名“mysql”:。使用require([])http://requirejs.org/docs/errors.htmlnotloaded

Javascript 尚未为上下文加载模块名“mysql”:。使用require([])http://requirejs.org/docs/errors.htmlnotloaded,javascript,mysql,node.js,cordova,module,Javascript,Mysql,Node.js,Cordova,Module,我正在visual studio社区中使用Apache cordova工具。我正在用Javascript编写一个混合应用程序。设置与MySQL数据库的连接时遇到此错误: 尚未为上下文加载模块名mysql:\ux。使用require[] 我的代码是 var mysql = require('mysql'); var connection = mysql.createConnection({ host : "localhost",

我正在visual studio社区中使用Apache cordova工具。我正在用Javascript编写一个混合应用程序。设置与MySQL数据库的连接时遇到此错误: 尚未为上下文加载模块名mysql:\ux。使用require[]

我的代码是

var mysql = require('mysql');

            var connection =  mysql.createConnection({
                host : "localhost",
                user : "root",
                password: "root"
            });

                connection.connect();

                connection.query("use verify");
                var strQuery = "select * from table1";  

                connection.query( strQuery, function(err, rows){
                    if(err) {
                        throw err;
                    }else{
                        console.log( rows );
                    }
                });
错误弹出在第一行。 我使用这两种方法安装了mysql

npm install mysql

使用通常的命令提示符和node.js,但问题仍然存在。
我还将mysql文件夹从nodejs复制到应用程序的根文件夹,但问题仍然存在。

免责声明:我从未使用过Cordova,因此不知道这是否有效:

RequireJS中require的语义与NodeJS中的稍有不同:NodeJS同步加载模块。因此,您的代码可以在之后立即处理。然而,在RequireJS中,代码是异步加载的。因此,我们必须指定一个回调,在加载模块时执行什么操作。因此,如果这是问题的根源,您的代码应该如下所示:

require( ['mysql'], function( mysql ) {
  var connection =  mysql.createConnection({
                      host : "localhost",
                      user : "root",
                      password: "root"
                    });

  connection.connect();

  connection.query("use verify");
  var strQuery = "select * from table1";  

  connection.query( strQuery, function(err, rows){
    if(err) {
      throw err;
    }else{
      console.log( rows );
    }
  });
});

错误来自require.js,它对require使用的语义与node稍有不同。我在我的应用程序文件夹中包含require.js,所以我缺少什么?标准requirejs语法是require['module'],function module{/*your code*/};因此,当加载模块时,会触发回调,但加载没有阻塞。但是我从来没有和Cordova一起使用过。我对js是个新手,你能用你的格式写上面的代码吗?SCRIPT5007:第23行的未处理异常,第21列(毫秒)-appx://io.cordova.blankcordovaapp2/www/index.html 0x800a138f-JavaScript运行时错误:无法获取未定义或空引用文件的属性“createConnection”:index.html,第23行,第21列弹出此错误是否确实可以访问目标环境中的MySQL数据库?从未听说过MySQL服务器在手机上运行。它目前没有在手机上运行。我首先在win 8.1上测试代码。我找不到任何直接从Cordova访问MySQL的文档。所有结果都在服务器上使用MySQL,Cordova访问该服务器。如果他们想在没有服务器的情况下在应用程序中存储数据,则使用本地存储。但是,如果mysql模块未加载,请参见如何连接服务器?
require( ['mysql'], function( mysql ) {
  var connection =  mysql.createConnection({
                      host : "localhost",
                      user : "root",
                      password: "root"
                    });

  connection.connect();

  connection.query("use verify");
  var strQuery = "select * from table1";  

  connection.query( strQuery, function(err, rows){
    if(err) {
      throw err;
    }else{
      console.log( rows );
    }
  });
});