无法下载msnodesql-0.2.1-v0.10-x64.msi

我无法安装msnodesql。

本来我试过

npm install node-sqlserver 

…这警告说它已被msnodesql取代。

我成功安装了Node.js,iisnode,并且看到了正在服务的示例Hello.js(yayee,wonderful),所以至lessnode和iisnode正在工作。

我安装了prereq的:

 Node.js - use the latest version if possible, but it has been tested on node 0.6.10 and later node-gyp - latest version installed globally (npm install -g node-gyp) python 2.7.x - for node-gyp (make sure it is in the path) Visual C++ 2010 - the Express edition is freely available from Microsoft SQL Server Native Client 11.0 - available as Microsoft SQL Server 2012 Native Client found in the SQL Server 2012 Feature Pack 

…当我运行这个,我得到:

 npm install msnodesql npm http GET https://registry.npmjs.org/msnodesql npm http 304 https://registry.npmjs.org/msnodesql > msnodesql@0.2.1 install c:\nodejs\node_modules\msnodesql > node scripts/install.js You are downloading Microsoft Driver for Node.js for SQL Server from Microsoft, the license agreement to which is available at http://download.microsoft.com/download/6/E/2/6E2D7972-E54D-45AA- 8AB6-41E616035147/EULA.rtf and in the project folder to which the software is downloaded. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. install.js: Unable to download msnodesql-0.2.1-v0.10-x64.msi npm ERR! weird error 1 npm ERR! not ok code 0 

我注册了一个许可证密钥C ++,所以,有人可以告诉我我在这里失踪?

请原谅这里的noob问题,但我不得不问,我该如何“检查包的额外依赖”? 那究竟是指什么?

发生此问题是因为在scripts / install.js中的目标数据包中存在无效的驱动程序URL。 其实在微软下载你会发现msnodesql-0.2.1-v0.8-x64.msi,但不是脚本中指出的msnodesql-0.2.1-v0.10-x64.msi。 纠正它的唯一方法是从本地驱动器安装它。

http://www.microsoft.com/en-us/download/details.aspx?id=29995分开下载驱动器。 那么我build议你以下几点:

  1. 从Git Hub下载(msnodesql)压缩包。 将其解压缩到本地驱动器
  2. 在解压后的目录中replace内容

     scripts/install.js 

    如下所示:

     var assert=require('assert'); var subprocess=require('child_process'); var package=require('../package.json'); function log( msg ) { console.log( "install.js: " + msg ); } console.log( "You are installing driver locally." ); var msiName = 'HERE_IS_THE_PATH_TO_YOUR_DOWNLOADED_DRIVER\\msnodesql-0.2.1-v0.8-x64.msi'; // run the msi to extract the driver inside var msiCmd = [ 'cmd', '/c', 'msiexec', '/i', msiName, '/quiet','IACCEPTMSNODESQLLICENSETERMS=Yes', 'NPMINSTALL=Yes' ].join(' '); subprocess.exec( msiCmd, function( error, stdout, stderr ) { if( error !== null ) { log( error ); log( stdout ); process.exit( 1 ); } }); 

然后就跑吧

 npm install FULL_PATH_TO_UNZIPPED_PACKAGE_DIR 

安装过程不应该失败。 而在你的应用程序的模块文件夹将是一个

  msnodesql 

包。 那么你应该下载(如果你不是自己build造的)

 sqlserver.node 

从Git Hub(我的声望不允许发布我的链接,所以我会回复它,如果你需要它),并将其放置到

您的msnodesql模块目录的lib文件夹。 这应该对你有所帮助

这工作从这里安装:

http://www.microsoft.com/en-us/download/details.aspx?id=29995

…不是从npm:

 npm install msnodesql 

内核的答案让我走了大半路。 我不得不执行一些额外的步骤来实现它的工作。

configuration:

  • MS Server 2008 R2
  • 节点v0.10.29 32位
  • node-gyp v0.13.1
  • python v2.7.7
  • Visual Studio 2013 Express

当我尝试安装msnodesql每个内核的指示:

 npm install C:\Users\foo\msnodesql 

…我有编译错误。

我根据我在这里阅读修复: https : //github.com/Azure/node-sqlserver/issues/168

不幸的是,他的第二个代码更改没有通过。 这里是我所做的所有改变:

 Operation.h, line 38, added cast to last argument: int result = uv_queue_work(uv_default_loop(), &operation->work, OnBackground, (uv_after_work_cb)OnForeground); stdafx.h, line 37, added #include to solve shared_ptr issues: #include <memory> 

在这些变化之后,重新做我的npm安装工作。