我想让我的节点/ mongo/express应用程序在Openshift上工作。它在本地工作,但在Openshift上,我得到一个错误:无法找到模块('swig')我已经将它添加到package.json中的依赖项中,如下所示。Openshift无法加载C++ bson扩展/无法找到模块('swig')
而且我需要在我的server.js像这样:
var swig = require('swig'); var cons = require('consolidate');
//later app.engine('html', cons.swig);
完整的错误读取:
Failed to load c++ bson extension, using pure JS version
Current directory: /var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/
repo
/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/repo/node_modules/m
ongodb/lib/mongodb/mongo_client.js:378
throw err
^
Error: failed to connect to [127.9.214.2:27017]
at null.<anonymous> (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/ru
ntime/repo/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
at EventEmitter.emit (events.js:106:17)
at null.<anonymous> (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/ru
ntime/repo/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15
)
at EventEmitter.emit (events.js:98:17)
at Socket.<anonymous> (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/
runtime/repo/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:426:14
at process._tickCallback (node.js:415:13)
DEBUG: Program node server.js exited with code 8
DEBUG: Starting child process with 'node server.js'
changed
Failed to load c++ bson extension, using pure JS version
Current directory: /var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/
repo
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
Express server listening on port 8080
module.js:340
throw err;
^
Error: Cannot find module 'swig'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/
runtime/repo/server.js:3:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
DEBUG: Program node server.js exited with code 8
DEBUG: Starting child process with 'node server.js'
这是与未加载C++ BSON扩展问题,这是造成这些其他错误?有没有解决这个问题的方法?它在本地工作正常,只是不在openshift。 在此先感谢您的帮助!
我删除它和故宫运行安装重新安装在我的节点模块文件夹和固定找不到模块(“痛饮”)错误,但是,现在我得到一个错误,它无法找到模块'../helpers',这似乎是一个文件夹,应该存在于node-modules文件夹中的swig内部。我跑了搜索,其中被列入它,这就是我的了:
Searching 744 files for "../helpers"
C:\Repositories\meanapps\node_modules\swig\lib\tags\else.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\filter.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\for.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\if.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\import.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\include.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
3
C:\Repositories\meanapps\node_modules\swig\lib\tags\set.js:
1: var helpers = require('../helpers'),
2 _ = require('underscore');
难道这是因为我使用痛饮的版本不正确?
好的,通过确保它们通过git添加到openshift来修复该错误。现在,我得到这个,我不知道它是什么寻找:
Error: ENOENT, no such file or directory '//layout.html'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at getSingle (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/r
epo/node_modules/swig/lib/swig.js:152:19)
at get (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/repo/no
de_modules/swig/lib/swig.js:159:7)
at Object.exports.compileFile (/var/lib/openshift/52fda83ee0b8cd07040001cb/a
pp-root/runtime/repo/node_modules/swig/lib/swig.js:174:5)
at Object.<anonymous> (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/
runtime/repo/node_modules/swig/lib/parser.js:346:33)
at Array.forEach (native)
at Function._.each._.forEach (/var/lib/openshift/52fda83ee0b8cd07040001cb/ap
p-root/runtime/repo/node_modules/underscore/underscore.js:79:11)
at Object.precompile (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/r
untime/repo/node_modules/swig/lib/parser.js:324:7)
at Object.compile (/var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runt
ime/repo/node_modules/swig/lib/parser.js:425:18)
我可能会建议彻底删除您的node_modules文件夹并使用'npm install'重新获取它。在我遇到奇怪的npm问题时,我还必须运行'npm cache clean'。另外,由于您在安装本机模块时遇到问题,您可能需要考虑是否安装了gcc。 – iandotkelly
嘿,修复了无法找到模块'swig'错误!现在我得到了一个不同的但相关的错误,我将在上面进行更新。谢谢! –
我认为我现在的问题是swig需要fs。我试图用npm install fs来安装fs,但它回应说它不在npm注册表中。你认为这可能是问题,如果是的话,如果它不在注册表中,我该如何安装fs? –