2014-10-11 8 views
12

Ich habe ein Node-Webkit-Projekt mit einer main.js. An der Spitze, ich habeNode.js kann keine .js-Datei im selben Verzeichnis benötigen

var updater = require("./updater.js"); 

und ich habe eine Datei updater.js im selben Verzeichnis wie main.js benannt. Wenn ich die app laufen lasse, erhalte ich die Fehler

Uncaught Error: Cannot find module './updater.js' 

updater.js darin eine Zeile hat:

module.exports = "Hello!"; 

Ich habe keine Ahnung, warum es nicht die Datei benötigen kann. Ich habe ein anderes Projekt gesehen, das dasselbe macht. Ich kann require reguläre npm Module einfach in Ordnung aus dem gleichen main.js.

+0

Haben Sie Leseberechtigung für 'updater.js'? – LotusH

+0

Und wie hast du Knoten gestartet? Haben Sie Knoten in diesem Verzeichnis direkt gestartet, indem Sie 'node main.js' eingegeben haben? Wenn du ein paar Helfer benutzt hast, hat sich die 'cwd' möglicherweise geändert. – LotusH

+0

verwenden Sie 'node main' im Verzeichnis, in dem' main.js' sich befindet, wenn es diesen Fehler auslöst, oder laden Sie 'main.js' als Modul in einem anderen Skript? –

Antwort

16

Dies ist, weil, wenn Sie app (main.js) mit Node-Webkit ausführen das Stammverzeichnis (Arbeitsverzeichnis) ist wo die index.html ist in, also './' bezieht sich auf dieses Verzeichnis nicht das in ., welche die Datei, die Sie das Modul anfordert von in ist

Sie können dieses Problem leicht lösen, indem resolve method in 'path' node module mit und geben Sie die Ausgabe von an die erfordern Methode in Ihrer Arbeitsdatei

einfach wie folgt vor:

var path = require('path'); 
var updater = require(path.resolve(__dirname, "./updater.js")); 

EDIT: Info über global l Knotenobjekt '__dirname' (und andere) kann gefunden werden here.

+0

Plus 1 für den Link zum Dokument – SeanRamzan

Verwandte Themen