Sails.js 更新nodeJS版本后尝试运行sails服务器时出错

Sails.js 更新nodeJS版本后尝试运行sails服务器时出错,sails.js,bcrypt,Sails.js,Bcrypt,我在做一个帆船项目。我刚刚将我的nodeJS版本更新到了v5.0.0,现在在我的应用程序上运行sails lift。我得到: /Users/davidgeismar/wefootpostgres/node_modules/bindings/bindings.js:83 掷e ^ 错误:模块版本不匹配。期望47,得到46。 错误(本机) 在Object.Module.\u extensions..节点(Module.js:450:18) 在Module.load(Module.js:356:32)

我在做一个帆船项目。我刚刚将我的nodeJS版本更新到了v5.0.0,现在在我的应用程序上运行
sails lift
。我得到:

/Users/davidgeismar/wefootpostgres/node_modules/bindings/bindings.js:83 掷e ^ 错误:模块版本不匹配。期望47,得到46。 错误(本机) 在Object.Module.\u extensions..节点(Module.js:450:18) 在Module.load(Module.js:356:32) 在Function.Module.\u加载(Module.js:311:12) at Module.require(Module.js:366:17) 根据需要(module.js:385:17) at绑定(/Users/davidgeismar/wefootpostgres/node_modules/bindings/bindings.js:76:44) 反对。(/Users/davidgeismar/wefootpostgres/node_modules/bcrypt/bcrypt.js:3:35) 在模块处编译(Module.js:425:26) 在Object.Module.\u extensions..js(Module.js:432:10) 在Module.load(Module.js:356:32) 在Function.Module.\u加载(Module.js:311:12) at Module.require(Module.js:366:17) 根据需要(module.js:385:17) 反对。(/Users/davidgeismar/wefootpostgres/api/services/PaiementService.js:2:14) 在模块处编译(Module.js:425:26)

binding.js文件如下所示:

/**
 * Module dependencies.
 */

var fs = require('fs')
  , path = require('path')
  , join = path.join
  , dirname = path.dirname
  , exists = fs.existsSync || path.existsSync
  , defaults = {
        arrow: process.env.NODE_BINDINGS_ARROW || ' → '
      , compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled'
      , platform: process.platform
      , arch: process.arch
      , version: process.versions.node
      , bindings: 'bindings.node'
      , try: [
          // node-gyp's linked version in the "build" dir
          [ 'module_root', 'build', 'bindings' ]
          // node-waf and gyp_addon (a.k.a node-gyp)
        , [ 'module_root', 'build', 'Debug', 'bindings' ]
        , [ 'module_root', 'build', 'Release', 'bindings' ]
          // Debug files, for development (legacy behavior, remove for node v0.9)
        , [ 'module_root', 'out', 'Debug', 'bindings' ]
        , [ 'module_root', 'Debug', 'bindings' ]
          // Release files, but manually compiled (legacy behavior, remove for node v0.9)
        , [ 'module_root', 'out', 'Release', 'bindings' ]
        , [ 'module_root', 'Release', 'bindings' ]
          // Legacy from node-waf, node <= 0.4.x
        , [ 'module_root', 'build', 'default', 'bindings' ]
          // Production "Release" buildtype binary (meh...)
        , [ 'module_root', 'compiled', 'version', 'platform', 'arch', 'bindings' ]
        ]
    }

/**
 * The main `bindings()` function loads the compiled bindings for a given module.
 * It uses V8's Error API to determine the parent filename that this function is
 * being invoked from, which is then used to find the root directory.
 */

function bindings (opts) {

  // Argument surgery
  if (typeof opts == 'string') {
    opts = { bindings: opts }
  } else if (!opts) {
    opts = {}
  }
  opts.__proto__ = defaults

  // Get the module root
  if (!opts.module_root) {
    opts.module_root = exports.getRoot(exports.getFileName())
  }

  // Ensure the given bindings name ends with .node
  if (path.extname(opts.bindings) != '.node') {
    opts.bindings += '.node'
  }

  var tries = []
    , i = 0
    , l = opts.try.length
    , n
    , b
    , err

  for (; i<l; i++) {
    n = join.apply(null, opts.try[i].map(function (p) {
      return opts[p] || p
    }))
    tries.push(n)
    try {
      b = opts.path ? require.resolve(n) : require(n)
      if (!opts.path) {
        b.path = n
      }
      return b
    } catch (e) {
      if (!/not find/i.test(e.message)) {
        throw e
      }
    }
  }

  err = new Error('Could not locate the bindings file. Tried:\n'
    + tries.map(function (a) { return opts.arrow + a }).join('\n'))
  err.tries = tries
  throw err
}
module.exports = exports = bindings


/**
 * Gets the filename of the JavaScript file that invokes this function.
 * Used to help find the root directory of a module.
 * Optionally accepts an filename argument to skip when searching for the invoking filename
 */

exports.getFileName = function getFileName (calling_file) {
  var origPST = Error.prepareStackTrace
    , origSTL = Error.stackTraceLimit
    , dummy = {}
    , fileName

  Error.stackTraceLimit = 10

  Error.prepareStackTrace = function (e, st) {
    for (var i=0, l=st.length; i<l; i++) {
      fileName = st[i].getFileName()
      if (fileName !== __filename) {
        if (calling_file) {
            if (fileName !== calling_file) {
              return
            }
        } else {
          return
        }
      }
    }
  }

  // run the 'prepareStackTrace' function above
  Error.captureStackTrace(dummy)
  dummy.stack

  // cleanup
  Error.prepareStackTrace = origPST
  Error.stackTraceLimit = origSTL

  return fileName
}

/**
 * Gets the root directory of a module, given an arbitrary filename
 * somewhere in the module tree. The "root directory" is the directory
 * containing the `package.json` file.
 *
 *   In:  /home/nate/node-native-module/lib/index.js
 *   Out: /home/nate/node-native-module
 */

exports.getRoot = function getRoot (file) {
  var dir = dirname(file)
    , prev
  while (true) {
    if (dir === '.') {
      // Avoids an infinite loop in rare cases, like the REPL
      dir = process.cwd()
    }
    if (exists(join(dir, 'package.json')) || exists(join(dir, 'node_modules'))) {
      // Found the 'package.json' file or 'node_modules' dir; we're done
      return dir
    }
    if (prev === dir) {
      // Got to the top
      throw new Error('Could not find module root given file: "' + file
                    + '". Do you have a `package.json` file? ')
    }
    // Try the parent dir next
    prev = dir
    dir = join(dir, '..')
  }
}
/**
*模块依赖关系。
*/
var fs=require('fs')
,path=require('path'))
,join=path.join
,dirname=path.dirname
,exists=fs.existsSync | | path.existsSync
,默认值={
箭头:process.env.NODE_绑定_箭头| |'→ '
,已编译:process.env.NODE_BINDINGS_compiled_DIR | |“compiled”
,platform:process.platform
,arch:process.arch
,版本:process.versions.node
,bindings:'bindings.node'
,请尝试:[
//“build”目录中节点gyp的链接版本
['module_root','build','bindings']
//节点waf和gyp_插件(也称为节点gyp)
,['module_root','build','Debug','bindings']
,['module_root','build','Release','bindings']
//调试文件,用于开发(遗留行为,针对节点v0.9删除)
,['module_root','out','Debug','bindings']
,['module_root','Debug','bindings']
//发布文件,但手动编译(遗留行为,针对节点v0.9删除)
,['module_root','out','Release','bindings']
,['module_root','Release','bindings']

//来自节点waf的旧版本,节点I无法重现此错误。在更新到节点v5.0.0后,您是否尝试重新安装sails、bcrypt和绑定?尝试运行npm安装bcrypt、npm安装sails和npm安装绑定。或者运行rm-r node_模块和npm安装感谢它再次工作!!!