Sails.js 更新nodeJS版本后尝试运行sails服务器时出错
我在做一个帆船项目。我刚刚将我的nodeJS版本更新到了v5.0.0,现在在我的应用程序上运行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)
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安装感谢它再次工作!!!