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

时间:2013-10-29 15:00:26

标签: node.js iisnode node-sqlserver

我无法安装msnodesql。

最初我试过

npm install node-sqlserver

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

我成功安装了Node.js,iisnode,我看到提供的样本Hello.js(yayee,很棒),所以至少node和iisnode正在工作。

我安装了先决条件:

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 ++,所以,有人可以告诉我这里缺少什么吗?

请原谅这里的菜鸟问题,但我不得不问,我如何“检查软件包是否存在其他依赖关系”? 究竟是指什么?

4 个答案:

答案 0 :(得分:11)

出现此问题是因为在scripts / install.js中的目标packege中,驱动程序的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单独下载云端硬盘。然后我建议你:

  1. 从下载 Git Hub (msnodesql) 拉链包装。将其解压缩到本地驱动器
  2. 在解压缩的目录中替换

    的内容
    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 );
        }
    });
    
  3. 然后运行

    npm install FULL_PATH_TO_UNZIPPED_PACKAGE_DIR
    

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

          msnodesql
    

    包。 然后你应该下载(如果你不是自己建造的)

    sqlserver.node
    
    来自Git Hub的

    (我的声誉不允许发布链接到它,所以如果你需要它我会回复它)并把它放到

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

答案 1 :(得分:3)

这可以从这里安装:

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

...不是来自npm:

npm install msnodesql

答案 2 :(得分:1)

内核的答案让我大部分都在那里。我必须执行几个额外的步骤才能让它发挥作用。

配置:

  • MS Server 2008 R2
  • node v0.10.29 32-bit
  • 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安装。

答案 3 :(得分:0)

你好,这对我有用

npm安装msnodesqlv8-保存