【问题】
通过参考官网的:
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 <[email protected]>", "Jay Kint <[email protected]>", "Warren Read <[email protected]>", "George Yan <[email protected]>", "Inga Verbitskaya <[email protected]>"], "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’