我无法安装msnodesql。

本来我试过

npm install node-sqlserver

...并且这警告说它已被msnodesql取代。

我已经成功安装了Node.js和iisnode,并且看到示例Hello.js得到了服务(非常好),因此至少node和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

> [email protected] 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

我用许可证 key 注册了C++,所以,有人可以告诉我我在这里缺少什么吗?

请问这里的noob问题,但是我不得不问,如何“检查程序包中是否存在其他依赖项”?
那到底指的是什么?

最佳答案

发生此问题的原因是,在scripts/install.js的目标包中,驱动程序的URL无效。实际上,在Microsoft下载上,您会找到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分开下载驱动器。然后,我建议您:

  • 从下载
    Git Hub (msnodesql)
    zipper 包装。将其解压缩到本地驱动器
  • 在解压缩的目录中替换内容
    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
    

    安装过程不应失败。在您应用程序的modules文件夹中,
          msnodesql
    

    包裹。
    然后,您应该下载(如果不是您自己 build 的)
    sqlserver.node
    

    从Git Hub(我的名声不允许发布链接到我,因此如果需要,我会回复它),然后将其放置到

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

    09-18 15:22