2014-05-09 28 views
6

Sono in esecuzione su Linux Mint 16 'petra' a 64 bit, e sto provando a usare 'phantomjs' per la prima volta, insieme al nodo js.Node js e phantomjs - Impossibile trovare il modulo 'debole'

phantomjs ho installato globalmente:

sudo npm install -g phantomjs 

... e confermato che è in esecuzione (ho la richiesta phantomjs eseguendo "phantomjs" nel terminale)

e Ho installato il nodo modulo "fantasma" all'interno del mio progetto nodo:

npm install phantom 

Fin qui tutto bene.

Tuttavia, nel mio codice dell'applicazione, non appena si tenta di eseguire questa linea:

var phantom = require('phantom'); 

... il programma si blocca con la seguente traccia:

 
Listening on port 3000 
about to instantiate phantom module... 
module.js:333 
    throw err; 
     ^
Error: Cannot find module 'weak' 
    at Function.Module._resolveFilename (module.js:331:15) 
    at Function.Module._load (module.js:273:25) 
    at Module.require (module.js:357:17) 
    at require (module.js:373:17) 
    at new D (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/dnode/index.js:28:20) 
    at module.exports (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/dnode/index.js:8:12) 
    at /home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/phantom.js:135:13 
    at Server.handler (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/index.js:22:9) 
    at Server.EventEmitter.emit (events.js:104:17) 
    at App.emit (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/node_modules/sockjs/lib/sockjs.js:182:27) 
    at Session.emit_open (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/node_modules/sockjs/lib/transport.js:107:23) 

Posso confermare che in effetti non ci sono "weak.js" in nessun punto del progetto.

Ho eseguito 'npm install' per assicurare che tutte le dipendenze siano state installate.

La ricerca di Google non ha rivelato nulla di utile. Qualcuno può offrire qualche consiglio?

+0

Infatti. Typo, mi dispiace. Dovresti leggere: 'sudo npm install -g phantomjs' (ora corretto in questione). – user2209634

risposta

17

Ho avuto lo stesso problema utilizzando node.js e phantom in una macchina Windows, ho scoperto che è necessario un trattamento speciale sull'ambiente Windows. il documento npm è here.

var phantom = require('phantom'); 
phantom.create(function(ph) { 
    return ph.createPage(function(page) { 
     return page.open("http://www.google.com", function(status) { 
     console.log("opened google? ", status); 
     return page.evaluate((function() { 
      return document.title; 
     }), function(result) { 
     console.log('Page title is ' + result); 
     return ph.exit(); 
     }); 
    }); 
    }); 
}, { 
    dnodeOpts: {weak: false} 
}); 

preavviso phantom.create (funzione, opzioni, callback), e qui le opzioni utilizza dnodeOpts: {debole: true}

+2

Questa dovrebbe essere la risposta accettata. Risolto il problema della dipendenza "debole" per me. –

3

Avete installato build-essential nel vostro sistema? Perché debole è un modulo che deve essere compilato localmente. Avevo funzionato in un sistema Ubuntu una settimana fa installando build-essential (sudo apt-get install build-essential), ma ora quando provo in Linux Mint, mi dà lo stesso errore che si sta ottenendo. Durante il npm install -g phantom, si avverte che non è stato possibile installare weak 0.3.1.

Hai già trovato qualche soluzione?

EDIT

E, a proposito della differenza fondamentale tra il sistema in cui sono riuscito e quello attuale è che, il primo era 32 bit, quest'ultima dove sta venendo a mancare è 64 bit. Il modulo "debole" ha problemi che impediscono l'installazione su una scatola a 64 bit?

LAVORO SOLUZIONE

ho ottenuto questo risolto seguendo questi passaggi:

  1. sudo add-apt-repository ppa:fkrull/deadsnakes
  2. sudo apt-get update
  3. sudo apt-get install python2.6
  4. sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.6 20
  5. python --version dovrebbe dare 2.6.x. Il modulo debole non viene installato quando la versione di Python è superiore a 2.6.x.

Dopo aver verificato che il nodo e il npm siano le ultime versioni. Ho il nodo v0.10.28 e npm v1.4.9.

Se il modulo phantom è già installato, rimuoverlo eseguendo npm uninstall phantom. Quindi eseguire npm cache clean.

Ora installare separatamente debole: npm install weak. Se ciò avviene, installa il fantoccio eseguendo npm install phantom.

Questo dovrebbe risolvere il problema.

+0

Versione corrente del nodo: v0.11.14-pre Versione corrente di npm: 1.4.9 Ha fatto tutto quanto sopra. Fallisce in un punto intermedio 'NPM installare debole' > [email protected] installare/home/joe/Documenti/My Stuff/Programmazione/Angular.js Progetti/NodeJS Messing/FreeAgentScraper/node_modules/debole > nodo-gyp ricostruire gyp ERR! configura l'errore ERG gyp! Stack Error: non è possibile installare le versioni "pre" del nodo, utilizzare invece il flag --nodedir anziché ERR Gyp! stack all'installazione (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:66:16) – user2209634

+0

Hmmm, non ho mai affrontato quel problema. Ho trovato un paio di domande StackOverflow relative al tuo problema [qui] (http://stackoverflow.com/questions/12947145/error-pre-versions-of-node-cannot-be-installed-use-the-nodedir-flag- instea) e [qui] (http://stackoverflow.com/questions/18777882/node-gyp-error-while-doing-npm-install). Dategli un'occhiata Suppongo che l'uso di una versione stabile di node.js invece di 'v0.11.14-pre' lo risolva. O forse usa il flag '--nodedir'. – rkrishnan

0

Ho avuto lo stesso problema, e questo codice fisso il mio problema. versione Phantom = 1.9.8 Phantom versione del modulo NPM = 0.8.4

`

var phantom=require('phantom'); 
phantom.create(function(ph){ 
    },{ 
     dnodeOpts: { 
      weak: false 
     }, 
     parameters:{ 
      'web-security': 'no' 
     } 
}); 

`

Problemi correlati