Node.js错误:%1不是有效的Win32应用程序

时间:2015-06-25 12:35:52

标签: node.js bcrypt

您好我从正在运行的Node.js服务器下载了我的项目副本,并尝试运行它但遇到以下错误:

错误:

E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt\node_modules\bindings\bindings.js:79
        throw e
              ^
Error: %1 is not a valid Win32 application.
E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt\build\Release\bcrypt_lib.node
    at Error (native)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at bindings (E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt\node_modules\bindings\bindings.js:74:15)
    at Object.<anonymous> (E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt\bcrypt.js:3:35)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (E:\Projects\Smart Automation Web\Zigma_copy\automator\api\services\UserManager.js:2:14)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)

我是如何尝试运行我的应用程序的:

  1. 我使用FTP从我的服务器下载了完整的应用文件夹
  2. 我通过webstorm IDE
  3. 打开了项目
  4. 我打开了它的终端并输入了:npm install
  5. 这是成功的。
  6. 然后我输入了风帆升降机,并收到以下错误。
  7. 我是新手,无法找到失败的原因。虽然我可以阅读错误并且它说了一些关于我的UserManager.js的信息,所以我也在这里唠叨。

    UserManager.js:

    var jwt = require('jsonwebtoken')
    var bcrypt = require('bcrypt');
    
    var jwtSecret = "werisdkf120sdkfr84rwerf";
    var ISSUER = "home-automator.com";
    var EXPIRY_TIME = 120*500;
    
    function genToken(user) {
      var token = jwt.sign({id: user.id}, jwtSecret, {issuer: ISSUER, expiresInMinutes: EXPIRY_TIME});
      return token;
    }
    
    module.exports = {
      hashPassword: function (plainTxtPassword, salt, next) {
        salt = salt || bcrypt.genSaltSync(6);
        bcrypt.hash(plainTxtPassword, salt, function (err, hash) {
          if (err) {
            return next({err: {message: "Something went wrong. Please try again later."}});
          }
          next(null, hash, salt);
        })
      },
    
      createUser: function (newUser, next) {
        User.findOneByEmail(newUser.email, function (err, user) {
          if (err) {
            return next({err: {message: "Failed to create user. Please try again later."}});
          }
    
          if (user) {
            return next({err: {message: "Email already registered. Please try a different email address."}})
          }
    
          User.create(newUser, function (err, user) {
            if (err) {
              return next({err: err});
            }
    
            next(null, user);
          })
        })
      },
    
      generateAuthToken: function (user) {
        return genToken(user);
      },
    
      generateAuthTokenFromPassword: function (username, password, next) {
        User.findOne({email: username}, function (err, user) {
          if (err) {
            return next({err: {message: "Something went wrong, please try again later."}});
          }
    
          if (!user) {
            return next({err: {message: "Invalid email address and/or password. Please enter valid login credentials and try again."}})
          }
    
          bcrypt.compare(password, user.encrypted_password, function (err, valid) {
            if (err) {
              return next({err: {message: "Something went wrong, please try again later."}});
            }
            if (!valid) {
              return next({err: {message: "Invalid email address and/or password. Please try again with valid login credentials."}});
            }
            else {
              next(null, user, genToken(user));
            }
          })
        })
      },
    
      getUserFromAuthToken: function (token, next) {
        jwt.verify(token, jwtSecret, {issuer: ISSUER}, function (err, user) {
          if (err) {
            return next(err);
          }
    
          User.findOne({id: user.id}, function (err, userData) {
            if (err) next(err);
            return next(null, userData);
          })
        })
      }
    }
    

    这是删除node_modules并再次执行npm install后得到的内容。现在看起来因为错误而丢失了一些包:

    E:\Projects\Smart Automation Web\Zigma_copy\automator>npm install
    npm WARN deprecated jsonwebtoken@4.2.2: Critical vulnerability fix in v5.0.0. See https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
    npm WARN deprecated grunt-lib-contrib@0.7.1: DEPRECATED. See readme: https://github.com/gruntjs/grunt-lib-contrib
    npm WARN deprecated jws@2.0.0: Security update: Versions below 3.0.0 are deprecated.
    /
    
    
    > bcrypt@0.8.3 install E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt
    > node-gyp rebuild
    
    
    E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
    gyp ERR! configure error
    gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
    gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
    gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:64:11
    gyp ERR! stack     at FSReqWrap.oncomplete (evalmachine.<anonymous>:99:15)
    gyp ERR! System Windows_NT 6.3.9600
    gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
    gyp ERR! cwd E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\bcrypt
    gyp ERR! node -v v0.12.0
    gyp ERR! node-gyp -v v1.0.2
    ERR! not ok
    -
    
    
    > sails@0.11.0 preinstall E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails
    > node ./lib/preinstall_npmcheck.js
    
    Sails.js Installation: Checking npm-version successful
    \
    
    
    > kerberos@0.0.7 install E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails-mongo\node_modules\mongodb\node_modules\kerberos
    > (node-gyp rebuild 2> builderror.log) || (exit 0)
    
    
    E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails-mongo\node_modules\mongodb\node_modules\kerberos>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
    /
    
    
    > bson@0.2.21 install E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails-mongo\node_modules\mongodb\node_modules\bson
    > (node-gyp rebuild 2> builderror.log) || (exit 0)
    
    
    E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails-mongo\node_modules\mongodb\node_modules\bson>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
    -
    
    
    > ws@0.5.0 install E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails\node_modules\sails-hook-sockets\node_modules\socket.io\node_modules\engine.io\node_modules\ws
    > (node-gyp rebuild 2> builderror.log) || (exit 0)
    
    \
    E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails\node_modules\sails-hook-sockets\node_modules\socket.io\node_modules\engine.io\node_modules\ws>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_mo
    dules\node-gyp\bin\node-gyp.js" rebuild
    -
    > ws@0.4.31 install E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails\node_modules\sails-hook-sockets\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws
    > (node-gyp rebuild 2> builderror.log) || (exit 0)
    
    
    E:\Projects\Smart Automation Web\Zigma_copy\automator\node_modules\sails\node_modules\sails-hook-sockets\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\
    \..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
    npm ERR! Windows_NT 6.3.9600
    npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
    npm ERR! node v0.12.0
    npm ERR! npm  v2.5.1
    npm ERR! code ELIFECYCLE
    
    npm ERR! bcrypt@0.8.3 install: `node-gyp rebuild`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the bcrypt@0.8.3 install script 'node-gyp rebuild'.
    npm ERR! This is most likely a problem with the bcrypt package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node-gyp rebuild
    npm ERR! You can get their info via:
    npm ERR!     npm owner ls bcrypt
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     E:\Projects\Smart Automation Web\Zigma_copy\automator\npm-debug.log
    

3 个答案:

答案 0 :(得分:6)

我尝试在Windows上部署时遇到此错误。

在项目文件夹node_modules(..prots \ server \ node_modules)中的部署服务器上删除包含npm-bcrypt的文件夹。

在部署服务器上,运行:

npm install bcrypt

它将重新安装bcrypt,它应该为你解决这个错误。此外,您需要Python&gt; 2.5和&lt; 3.0才能正确处理光纤。如果您安装了最新版本,它可能无法正常工作。

答案 1 :(得分:0)

您需要安装最新版本的Python。

使用开关--python =“ C:\ Path \ To \ python.exe”

设置环境变量PYTHON

设置npm配置变量python:

npm配置设置python“ C:\ Path \ To \ python.exe”

检查您是否在代理后面运行?如果是,则管理代理,以便t允许访问github.com。

上述所有条件满足后,运行以下命令。

npm install bcrypt

答案 2 :(得分:0)

当我在x64上使用node.js windows时遇到了类似的问题。 ia32 node.js很好。通过最后在arch=ia32中附加~/.npmrc来解决此问题。