Stworzyłem program node.js przy użyciu frameworka ekspresowego na moim komputerze, gdzie działa dobrze bez żadnych skarg.
Jednak gdy uruchamiam program na moim urządzeniu SUSE Studio, na którym jest przeznaczony, otrzymuję błąd przy każdej interakcji z plikiem.
Error: ENOENT, stat './path/to/file'
Sprawdziłem, czy uprawnienia do plików są poprawne, którymi są. Jeśli to ma znaczenie, na moim komputerze i urządzeniu działają różne wersje węzła.
jakieś pomysły?
__dirname + 'path/to/file';
Odpowiedzi:
Ścieżki określone za pomocą a
.
są względne w stosunku do bieżącego katalogu roboczego, a nie względem pliku skryptu. Więc plik może zostać znaleziony, jeśli uruchomisz,node app.js
ale nie, jeśli uruchomisznode folder/app.js
. Jedynym wyjątkiem jestrequire('./file')
i jest to możliwe tylko dlategorequire
, że istnieje na moduł, a zatem wie, z jakiego modułu jest wywoływany.Aby utworzyć ścieżkę względem skryptu, musisz użyć
__dirname
zmiennej.lub potencjalnie
źródło
Tutaj kod do korzystania z pliku app.js.
input określa nazwę pliku
źródło