2012-03-01 14 views
9

Windows altında d3.js oluşturmaya çalışıyorum. Makefile'yi çalıştırmak için cygwin'i kurdum. Ancak, marka bir parçası yüklemek olarak, bu npm install 'çağrıları ve bu çağrı başarısız:Windows'ta d3.js oluşturma (Cygwin) - 'npm install' yolu sorunu için iyi bir çözümdür?

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: Cannot find module 'C:\cygdrive\c\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js' 
    at Function._resolveFilename (module.js:332:11) 
    at Function._load (module.js:279:25) 
    at Array.0 (module.js:479:10) 
    at EventEmitter._tickCallback (node.js:192:40) 

Makefile:230: recipe for target `install' failed 
make: *** [install] Error 1 

sorunlar cygwin yolu öneki ('cygdrive \ c') dosya yolu eklendiğini gibi görünüyor (bunun dışında yol doğrudur).

Bu sorun için iyi bir çözüm olup olmadığını merak ediyorum? NODE_PATH değişkenini ihraç etmeyi ve Makefile'de değiştirmeyi denedim. Ancak bu, bu hatayı etkilemez (ve Makefile'yi olduğu gibi tutmayı tercih ederim).

DÜZENLEME: Webstorm komut satırından 'npm install' adını verdiğimde (cygwin olmadan) çalıştı. Contextify (jsdom gereksinimi) manüel ('npm install contextify -f') kurulumunu yapmalı ve daha sonra .node dosyasını https://github.com/Benvie/contextify/downloads'dan bağlamsal hale getirmek için build/Release içine kopyaladım ve 'npm install jsdom' ve 'npm install yon'ları' çalıştırdıktan sonra . PKH cevabı benim için işe yaramadı bu yüzden

#!/bin/sh 
cygwin=false; 
case "`uname`" in 
    CYGWIN*) cygwin=true; 
esac 

basedir=`dirname "$0"` 

if $cygwin; then 
    basedir=`cygpath -w "$basedir"` 
fi 

if [ -x "`dirname "$0"`/node.exe" ]; then 
    "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "[email protected]" 
else 
    node "$basedir/node_modules/npm/bin/npm-cli.js" "[email protected]" 
fi 
+0

Soru yanıtlandığı için bu, npm'de giderilmiştir: https://github.com/isaacs/npm/issues/2465 – pkh

cevap

3

Sen npm senaryoyu düzenleyebilirsiniz varsayılan olarak C: \ Program Files \ nodejs) gibi, bu tüm cygwin ortamları için çalışmalıdır.

#!/bin/sh 

NODE_DIR=`dirname "$0"` 
case `uname` in 
    *CYGWIN*) NODE_DIR=`cygpath -w "$NODE_DIR"`;; 
esac 

if [ -x "`dirname "$0"`/node.exe" ]; then 
    "`dirname "$0"`/node.exe" "$NODE_DIR/node_modules/npm/bin/npm-cli.js" "[email protected]" 
else 
    node "$NODE_DIR/node_modules/npm/bin/npm-cli.js" "[email protected]" 
fi 

bir cygwin bash isteminde iseniz Senaryoyu düzenlemek istemiyorsanız, ayrıca npm.cmd yerine NPM'nin çalıştırabilirsiniz.

+0

Ronin'in yanıtı için güncellenen CYGWIN algılama. – pkh

2

Bir Cygwin ortam değişkeni yok, ama npm komut değiştirme (: o cygwin duyarlı olacak şekilde

+0

Argh. Evet, bu doğru - Bir yerdeki bir rc dosyasında uname kontrolünü aldım ve bu gerçeği tamamen unutmuştum. – pkh