2014-03-04 159 views
1

我想讓我的節點/ 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) 
+0

我可能會建議徹底刪除您的node_modules文件夾並使用'npm install'重新獲取它。在我遇到奇怪的npm問題時,我還必須運行'npm cache clean'。另外,由於您在安裝本機模塊時遇到問題,您可能需要考慮是否安裝了gcc。 – iandotkelly

+0

嘿,修復了無法找到模塊'swig'錯誤!現在我得到了一個不同的但相關的錯誤,我將在上面進行更新。謝謝! –

+0

我認爲我現在的問題是swig需要fs。我試圖用npm install fs來安裝fs,但它迴應說它不在npm註冊表中。你認爲這可能是問題,如果是的話,如果它不在註冊表中,我該如何安裝fs? –

回答

3

我認爲你的問題的第一部分是某種損壞的模塊 - 或許是由於gcc的未安裝,但也許不是。

我的建議是你擦去節點模塊,並使用NPM緩存和重新獲取模塊:

rm -rf node_modules 
npm cache clean 
npm install 

一旦你這樣做,你經歷了打開文件「//layout.html」

問題

這似乎是一個已知問題,由initializing swig and to tell it where to find the template解決。

+0

它的工作!非常感謝你!我在我的電腦上安裝了gcc並添加到路徑中,但我認爲這個錯誤是需要在openshift上解決的。在openshift論壇上,我在這裏提到了https://www.openshift.com/content/c-bson-extension-using-pure-js-version#comment-39405。但現在似乎沒有造成任何嚴重問題,其他錯誤得到解決,應用程序運行起來就像一個魅力!再次感謝! –

+0

@CordonDavies - 不客氣,很樂意幫忙 – iandotkelly