Путь к файлу в Node.js - PullRequest
       4

Путь к файлу в Node.js

1 голос
/ 23 января 2020

У меня есть папка, которая выглядит как

Main> models> file1.ejs
|
|> route> file2.e js

Два требуют file1 из file2, код является константной переменной = require ("../ models / file1.e js) Допустим, я не если требуется относительная модель, почему const variable = require ("/ models / file1.e js") не работает.

Разве "/" означает запуск в каталоге root?

Если у нас есть обширное гнездо папок внутри другой, как мы можем избежать "../../../../" в нашем пути к файлу?

Кроме того, почему код в JS, который выглядит как Comment = require ("./ models / comment"), но не работает, когда вы делаете Comment = require ("models / comment")

или что-то в e js, который выглядит как <% - include ("partials / header")%> <% - include ("/ partials / header")%>, не работает.

В любом случае всегда нужно начинать с Каталог root во время пути? Запуск с "/", похоже, в конечном итоге вызывает ошибку, когда предполагается, что мой путь начинается с каталога root.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Разве "/" означает запуск в каталоге root?

Нет. «/» относится к существующему каталогу файлов.

Кроме того, почему код в JS, который выглядит как Comment = require ("./ models / comment"), работает, но не работает, когда Вы делаете Comment = require ("models / comment")

"/" - это то, как узлы различаются, если они должны выбираться локально или где-то в ваших установленных модулях. Представьте, что у вас установлен Express в вашем проекте и у вас есть файл express.js. Затем require('./express') импортирует ваш локальный файл, а require('express') импортирует установленную библиотеку.

Если у нас есть обширное гнездо папок внутри другой, как мы можем избежать "../../../../" в нашем пути к файлу?

Полагаю, вам понадобится Вавилон. Я не нашел хорошего примера в Интернете, но вот несколько полезных материалов.

Примечание: я работал над проектом узла с соответствующей настройкой, но опыт разработки был ужасным, так как мой редактор не смог подобрать разрешенный путь и боролся с автозаполнением и intellisense. (но я лично считаю, что способ установки был неправильным или устаревшим).

Ресурсы:

0 голосов
/ 23 января 2020

Например, рассмотрим приведенный ниже код:

var filename = "file1.ejs"; 
var fullpath = __dirname + "/models/" + filename;

Прочитайте документы о __dirname здесь

Вот как вы можете указать абсолютный путь, где __dirname предоставит вам путь до текущего рабочего каталога.

Где относительные пути работают, как показано ниже,

Например, если вы пытаетесь получить доступ к файлу file1.ejs, который находится внутри models каталог из другого файла file2.ejs, который находится внутри каталога models2, где каталог models2 также находится внутри models, тогда вы можете указать относительный путь,

ie, структура папок выглядит следующим образом ,

basePath/models/file1.ejs   
basePath/models/models2/file2.ejs

и доступ к file1.e js из file2.e js, как показано ниже,

var path = '../file1.ejs'  // going one folder back and getting inside parent models directory where the file1.ejs resides
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...