Cloud foundry 在Micro Cloud Foundry上部署Calipso时NodeJS bcrypt错误

Cloud foundry 在Micro Cloud Foundry上部署Calipso时NodeJS bcrypt错误,cloud-foundry,bcrypt,Cloud Foundry,Bcrypt,我试图用VMC将Calipso推到我拥有的一个Micro Cloud Foundry实例上,我被一个错误抛出,说 Unable to load shared library /var/vcap/data/dea/apps/{App-Name&ID}/app/node_modules/bcrypt/build/Release/bcrypt_lib.node at Object..node (module.js:463:11) at Module.load (module.js:

我试图用VMC将Calipso推到我拥有的一个Micro Cloud Foundry实例上,我被一个错误抛出,说

Unable to load shared library /var/vcap/data/dea/apps/{App-Name&ID}/app/node_modules/bcrypt/build/Release/bcrypt_lib.node 
 at Object..node (module.js:463:11)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at bindings (/var/vcap/data/dea/apps/Apptain-0-cb7703ae25d61741a91f9a828959ea6e/app/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
    at Object.<anonymous> (/var/vcap/data/dea/apps/{App-Name&ID}/app/node_modules/bcrypt/bcrypt.js:1:96)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
但这很奇怪,因为整个街区

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

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

对于(;i免责声明:我绝不是node.js专家,但lib的路径似乎有问题,即“{App Name&ID}”部分

由于bcrypt是本机dep,因此需要进行特殊处理。所有这些都在此处解释:

如果你还没有的话,你可能想看看。
另外,我不太确定那篇博文中描述的内容是否适用于(您的版本)micro CloudFoundry。您可能想在real CloudFoundry.com网站上试用一下,看看它是否解决了您的问题。

“{App Name&ID}”只是我用于我的应用程序的实际名称和ID的占位符。{“ignoreNodeModules”:true}我确实有一个cloudfoundry.json文件,其中包含json{“ignoreNodeModules”:true},我还有一个npm-shrinkwrap.json,所以我希望它会忽略node_modules文件夹,但事实并非如此。如果我从node_modules中拉出bcrypt,它将无法找到它。我与8月份发布的以下博客文章完全一致,唯一的区别是我没有部署到cloudfoundry.com子域,因此我的microcloud处于脱机模式(我是如何让它与常规域一起工作的)。好的,我很确定这个问题是因为micro(我猜你有1.2.0)早于对本机模块的支持。你能尝试在cf.com上部署以确认吗?Eric是正确的。microcloud Foundry的下一次更新应该会解决这个问题。
var tries = []
    , i = 0
    , l = opts.try.length
    , n

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