2014-10-11 17 views
12

Mam projekt węzeł-webkit z main.js. Na samym szczycie, mamNode.js nie może wymagać pliku .js w tym samym katalogu

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

i mam plik o nazwie updater.js w tym samym katalogu co main.js. Kiedy uruchomić aplikację, pojawia się błąd

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

updater.js ma jeden wiersz w tym:

module.exports = "Hello!"; 

Nie mam pojęcia, dlaczego to nie może wymagać pliku. Widziałem, że inny projekt robi to samo. Mogę require regularne npm modułów dobrze z tego samego main.js.

+0

Czy masz uprawnienia do odczytu pliku 'updater.js'? – LotusH

+0

A jak uruchomiłeś węzeł? Czy uruchomiłeś węzeł bezpośrednio w tym katalogu, wpisując 'node main.js'? Jeśli użyłeś niektórych pomocników, 'cwd' może się zmienić. – LotusH

+0

używasz 'węzła głównego' w katalogu, w którym znajduje się' main.js', kiedy wyświetla ten błąd, czy ładujesz w 'main.js' jako moduł w innym skrypcie? –

Odpowiedz

16

Dzieje się tak dlatego, że po uruchomieniu aplikacji (main.js) za pomocą węzła-webkit katalog główny (roboczy) jest tam, gdzie znajduje się plik index.html, więc "./" odnosi się do tego katalogu, a nie do tego w katalogu . który plik chcesz otrzymać moduł ze jest w

można łatwo rozwiązać ten problem za pomocą resolve method in 'path' node module i zapewnić wyjście z niej do metody wymagają w pliku roboczym

Wystarczy wykonać następujące czynności:

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

EDYCJA: informacje o globa l obiekt węzła "__dirname" (i inne) można znaleźć here.

+0

Plus 1 dla łącza do dokumentu – SeanRamzan