Unable to download msnodesql-0.2.1-v0.10-x64.msi

2020-02-12 05:38发布

问题:

I can't get msnodesql to install.

Originally I tried

npm install node-sqlserver

... and this warns that it has been superceded by msnodesql.

I successfully installed Node.js, iisnode and I see the sample Hello.js being served up (yayee, wonderful), so at least node and iisnode are working.

I installed the prereq's:

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

... and when I run this, I get:

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

I registered C++ with a license key, so, can someone please tell me what I am missing here?

Excuse the noob question here, but I have to ask, how do I "Check the package for additional dependencies" ? What is that referring to exactly?

回答1:

This problem occurs because in the target packege in scripts/install.js there's invalid url to the driver. Actually on Microsoft Download you will find msnodesql-0.2.1-v0.8-x64.msi but not msnodesql-0.2.1-v0.10-x64.msi which is pointed in script. The only way to correct it is to install it from local drive.

Download the Drive separately from http://www.microsoft.com/en-us/download/details.aspx?id=29995. Then I advise you the following:

  1. download from Git Hub (msnodesql) Zipped package. Unzip it to the local drive
  2. In the unzipped directory replace the contents of the

    scripts/install.js
    

    as the following:

    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 );
        }
    });
    

Then just run

npm install FULL_PATH_TO_UNZIPPED_PACKAGE_DIR

The install process should not fail. And in you app's modules folder will be a

      msnodesql

package. Then you should download (if you are not building by your self) the

sqlserver.node

from Git Hub (my reputation doesn't allow to post me link to it, so I'll reply with it if you need it) and place it to the

lib folder of your msnodesql module directory. This should help you.



回答2:

This worked to install from here:

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

... not from npm:

npm install msnodesql


回答3:

kernel's answer got me most of the way there. i had to perform a couple of additional steps to get it to work.

config:

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

when i tried installing msnodesql per kernel's instructions:

npm install C:\Users\foo\msnodesql

... i got compile errors.

i made fixes based on what i read here: https://github.com/Azure/node-sqlserver/issues/168

unfortunately, his 2nd code change didn't come through. here are all the changes i made:

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>

after those changes, re-doing my npm install worked.