最新消息:20190717 VPS服务器:Vultr新加坡,WordPress主题:大前端D8,统一介绍入口:关于

【未解决】Azure上运行sql示例代码出错:Error: Cannot find module ‘node-sqlserver’

Node.js crifan 1052浏览 0评论

【问题】

通过参考官网的:

How to: Connect to a SQL Database instance

去写的代码:

//https://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/sql-database/#ConnectionInfo
var sql = require('node-sqlserver');
var conn_str = "Server=tcp:xxx.database.windows.net,1433;Database=xxx;User ID=xxx;Password=xxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";

var http = require('http')
var port = process.env.port||3000;
http.createServer(function (req, res) {
    sql.query(conn_str, "SELECT * FROM TestTable", function (err, results) {
        if (err) {
            res.writeHead(500, { 'Content-Type': 'text/plain' });
            res.write("Got error 🙁 " + err);
            res.end("");
            return;
        }
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        for (var i = 0; i < results.length; i++) {
            res.write("ID: " + results[i].ID + " Column1: " + results[i].Column1 + " Column2: " + results[i].Column2);
        }
        res.end("; Done.");
    });
}).listen(port);

结果出错:

iisnode encountered an error when processing the request.

HRESULT: 0x2
HTTP status: 500
HTTP reason: Internal Server Error
You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is 'true'.

In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.

The last 64k of the output generated by the node.exe process to stderr is shown below:

Application has thrown an uncaught exception and is terminated:
Error: Cannot find module 'node-sqlserver'
    at Function._resolveFilename (module.js:337:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (C:\DWASFiles\Sites\uyb-dev\VirtualDirectory0\site\wwwroot\server.js:10:11)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Module.require (module.js:359:17)

【解决过程】

1.  想到了,之前参考:

How to: Connect to a SQL Database instance

中所提到的,下载了

node-sqlserver

并安装,结果实际上sql名为:

msnodesql,对应的package.json中也是这个值:

{
  "name": "msnodesql",
  "description": "Microsoft Driver for Node.js for SQL Server",
  "author": "Microsoft Corp.",
  "contributors": [ "Jonathan Guerin <jguerin@microsoft.com>", "Jay Kint <jkint@microsoft.com>", "Warren Read <wread@microsoft.com>", "George Yan <georgeya@microsoft.com>", "Inga Verbitskaya <ingave@microsoft.com>"],
  "version": "0.2.0",
  "keywords": ["sql", "database", "mssql", "azure", "sqlserver", "tds", "microsoft", "msnodesql", "node-sqlserver"],
  "homepage": "https://github.com/WindowsAzure/node-sqlserver",
  "bugs": "https://github.com/WindowsAzure/node-sqlserver/issues",
  "licenses": [
    {
      "type": "Apache 2.0",
      "url": "https://raw.github.com/WindowsAzure/node-sqlserver/master/LICENSE"
    }
  ],
  "main": "./lib/sql.js",
  "repository": {
    "type": "git",
    "url": "git://github.com/WindowsAzure/node-sqlserver.git" 
  },
  "engines": {
    "node": ">=0.6"
  },
  "devDependencies": {
     "mocha" : "0.14.x",
     "async" : "0.1.x"
  },
  "os" : [ "win32" ]
}

所以才想到,把上述的

var sql = require(‘node-sqlserver’);

换为:

var sql = require(‘msnodesql’);

结果同样出错:

Error: Cannot find module 'msnodesql'

2.

转载请注明:在路上 » 【未解决】Azure上运行sql示例代码出错:Error: Cannot find module ‘node-sqlserver’

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
57 queries in 0.135 seconds, using 18.86MB memory