2015-07-10 36 views
1

我有一個OpenShift齒輪與安裝的NodeJS和 MongoDB的墨盒。我添加了KeystoneJS,當我嘗試推送更新後的代碼時,由於缺少gyp模塊,構建失敗。下面的完整錯誤堆棧。OpenShift:導入錯誤:沒有模塊名爲GYP:上的NodeJS /蒙戈盒

有沒有其他人面臨節點/ mongo墨盒缺少gyp模塊?

謝謝! Nirav

remote: Traceback (most recent call last): 
remote: File "/opt/rh/v8314/root/usr/bin/gyp", line 15, in 
remote: import gyp 
remote: ImportError: No module named gyp 
remote: gyp ERR! configure error 
remote: gyp ERR! stack Error: gyp failed with exit code: 1 
remote: gyp ERR! stack at ChildProcess.onCpExit (/opt/rh/nodejs010/root/usr/lib/node_modules/node-gyp/lib/configure.js:343:16) 
remote: gyp ERR! stack at ChildProcess.emit (events.js:98:17) 
remote: gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:820:12) 
remote: gyp ERR! System Linux 2.6.32-504.16.2.el6.x86_64 
remote: gyp ERR! command "node" "/opt/rh/nodejs010/root/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" 
remote: gyp ERR! cwd /var/lib/openshift/559fa9944382ec4cf1000106/app-root/runtime/repo/node_modules/keystone/node_modules/keystone-utils/node_modules/limax/node_modules/cld 
remote: gyp ERR! node -v v0.10.35 
remote: gyp ERR! node-gyp -v v1.0.2 
remote: gyp ERR! not ok 
remote: 
remote: npm info [email protected] Failed to exec install script 
remote: npm ERR! EEXIST, open '/var/lib/openshift/559fa9944382ec4cf1000106/.npm/0fe9cfe4-6-npm-mime-db-1-14-0-package-tgz.lock' 
remote: File exists: /var/lib/openshift/559fa9944382ec4cf1000106/.npm/0fe9cfe4-6-npm-mime-db-1-14-0-package-tgz.lock 
remote: Move it away, and try again. 
remote: npm ERR! System Linux 2.6.32-504.16.2.el6.x86_64 
remote: npm ERR! command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install" "-d" 
remote: npm ERR! cwd /var/lib/openshift/559fa9944382ec4cf1000106/app-root/runtime/repo 
remote: npm ERR! node -v v0.10.35 
remote: npm ERR! npm -v 1.4.28 
remote: npm ERR! path /var/lib/openshift/559fa9944382ec4cf1000106/.npm/0fe9cfe4-6-npm-mime-db-1-14-0-package-tgz.lock 
remote: npm ERR! code EEXIST 
remote: npm ERR! errno 47 

回答

1

此錯誤開始發生突然對我來說,也是如此,儘管它已經工作過。出於某種原因,Python gyp模塊在盒式磁帶中不可用或無法找到。雖然我不知道發生了什麼變化,但我通過升級用於部署的npm安裝找到了解決方法。

爲此,我添加了兩個動作鉤:

  1. .openshift/action_hooks/pre_build

    #!/bin/sh 
    
    # We need to move the package.json file out of the way in pre_build, so 
    # that the OpenShift git post-receive hook doesn't try and use the old 
    # npm version to install the dependencies. 
    mv ${OPENSHIFT_REPO_DIR}/package.json \ 
        ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}_package.json 
    
  2. .openshift/action_hooks/build

    #!/bin/sh 
    
    # we moved the package.json file out of the way in pre_build, 
    # so that the OpenShift git post-receive hook doesn't try and use the 
    # old npm version to install the dependencies. Move it back in. 
    mv ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}_package.json \ 
        ${OPENSHIFT_REPO_DIR}/package.json 
    
    cd ${OPENSHIFT_REPO_DIR} 
    
    # We need an updated npm available for node-gyp to work reliable 
    npm install npm 
    
    # Now install the packages with the new npm version 
    ./node_modules/.bin/npm install 
    

使用替代NPM的想法安裝方式取自https://github.com/ryanj/nodejs-custom-version-openshift/tree/master/.openshift/action_hooks

我也試過使用環境變量和設置$PYTHONPATH,但在構建過程中沒有成功(儘管我已經在手動安裝中使用它)。

相關問題