@nodejs_ru

Страница 253 из 2748
Safort
06.10.2016
09:25:21
http://www.opennet.ru/opennews/art.shtml?num=45283 Компания RethinkDB сворачивают лавочку. Надеюсь проект кто-нибудь подхватит.

Сергей
06.10.2016
09:25:45
ты файлы по отдельности запускаешь или всегда из главного?

Safort
06.10.2016
09:26:29
Да я вот тоже уже начал её прикручивать к пет прожекту..

Google
Котяй Негодяй
06.10.2016
09:26:49
Короче, это свойства INIT_CWD, PWD в объекте process.env.

Evgeny
06.10.2016
09:27:43
чото мне кажется что ты не прав

Котяй Негодяй
06.10.2016
09:27:54
Ну, пока их значения не меняются.

Сергей
06.10.2016
09:28:02
Короче, это свойства INIT_CWD, PWD в объекте process.env.
это то, откуда ты запускаешь ноду

а не корень пакета

Котяй Негодяй
06.10.2016
09:28:10
Неа.

Специально перешёл на каталог ниже.

Сергей
06.10.2016
09:28:23
PWD - Print Working Directory

Котяй Негодяй
06.10.2016
09:28:36
Ну... Да. Я так и ожидал.

Только по факту другое поведение увидел.

Сергей
06.10.2016
09:28:55
это не корень)

Котяй Негодяй
06.10.2016
09:29:02
Правда запускал через npm-скрипт.

это не корень)
Но по факту он ссылается на корень npm-пакета.

Google
Сергей
06.10.2016
09:30:02
он ссылается туда откуда ты запускаешь ноду

запустишь из другого места будет показывать туда

если ты запускаешь приложение через условный app.js то тебе это решит проблему

а если ты будешь включать этот пакет в другое приложение то process.env.PWD будет указывать на приложение, а не на пакет

Котяй Негодяй
06.10.2016
09:31:43
Печаль.

Да, я уже проверил.

Так... INIT_CWD присутсвует только если я запускаю приложение через npm-скрипт.

Котяй Негодяй
06.10.2016
09:47:54
Неа

Не то же.

Alexey
06.10.2016
09:48:59
я правда неочень понимаю что относительно чего ты разолвишь, но обычно для этого хватает методов из модуля path, либо require.resolve

Nikita
06.10.2016
09:49:41
а что такое корень модуля?)

Котяй Негодяй
06.10.2016
09:49:49
Суть в том, что мне нужен надёжный способ найти корень проекта.

Alexey
06.10.2016
09:50:02
process.cwd?

либо можешь привязаться к файлам через __dirname или __filename

Котяй Негодяй
06.10.2016
09:51:06
Работает только если сам проект запускается из нужного места или через npm-script. Если же он подключен как модуль, то не подходит.

Alexey
06.10.2016
09:51:36
т.е. ты внутри модуля хочешь понять где находится корень проекта?

Nikita
06.10.2016
09:51:40
да какой тебе файл надо получить-то?)

Alexey
06.10.2016
09:51:52
ну тогда __dirname

Google
Alexey
06.10.2016
09:52:02
относительно него резолви путь до корня

самый надежный способ

Котяй Негодяй
06.10.2016
09:52:33
ну тогда __dirname
__dirname содержит каталог текущего файла.

Alexey
06.10.2016
09:52:51
да. ты же знаешь где на fs у тебя модуль лежит

в чем проблема то?

Котяй Негодяй
06.10.2016
09:53:34
Не знаю. Модуль может быть запущен кем угодно и откуда угодно.

Alexey
06.10.2016
09:53:58
я уже понял, что у тебя какой-то костыль

но есть еще module.parent

выдает инфу о родительском модуле из которого загрузили твой

Котяй Негодяй
06.10.2016
09:54:56
Не подходит.

Alexey
06.10.2016
09:55:35
https://nodejs.org/dist/latest-v6.x/docs/api/modules.html#modules_module_parent

тебе не угодишь :)

Nikita
06.10.2016
09:55:53
ты четко объяснить можешь, чего хочешь?))

Alexey
06.10.2016
09:55:55
в целом, это стандартные способы для определения пути

может ты к задаче неправильно подходишь?

Котяй Негодяй
06.10.2016
09:56:37
Есть файл /unknown/path/to/project/.../.../file.js. Внутри file.js нужно получить /unknown/path/to/project.

Evgeny
06.10.2016
09:56:58
так до проекта или до модуля?

Nikita
06.10.2016
09:57:23
а как этот файл запускают?

Котяй Негодяй
06.10.2016
09:57:27
До npm-пекта == до проекта.

Nikita
06.10.2016
09:57:34
это cli тулза?

Google
Котяй Негодяй
06.10.2016
09:58:10
Файл выполняется как модуль внутри проекта. Сам проект тоже выполняется как модуль в качестве npm-пакета.

Самый простой способ вижу — подниматься по файловому пути и искать package.json;

Пока что.

Alexey
06.10.2016
10:00:05
может тебе наоборот пробросить этот путь внутрь?

сделай в package.json скрипт для надежности, который и будешь запускать

Котяй Негодяй
06.10.2016
10:00:25
Это костыльнее предыдущего варианта. =)

Его никто не будет запускать. Он же npm-пакет.

Admin
ERROR: S client not available

Alexey
06.10.2016
10:01:09
ну как я понял у тебя схема такая, ты непонятно откуда запускаешь зависимость проекта и хочешь внутри зависимости получить путь к проекту

Котяй Негодяй
06.10.2016
10:01:30
Бинго. =)

Alexey
06.10.2016
10:01:47
ну так сделай промежуточный шаг с npm скриптом

Evgeny
06.10.2016
10:02:07
а как вызывается твой модуль?

Котяй Негодяй
06.10.2016
10:02:31
Подключается через require.

Alexey
06.10.2016
10:02:51
ох

Evgeny
06.10.2016
10:03:00
он реквайрится из проекта?

Nikita
06.10.2016
10:03:03
function getProjectPath() { const idx = __dirname.indexOf('node_modules'); if (idx === -1) { return __dirname; } return __dirname.slice(0, idx); }

Alexey
06.10.2016
10:03:08
похоже, что нет )

Evgeny
06.10.2016
10:03:14
может тебе через стектрейс ошибки находить откуда тебя вызвали?

Alexey
06.10.2016
10:03:34
да не, тут лучше схему упростить

Котяй Негодяй
06.10.2016
10:03:47
он реквайрится из проекта?
Сам проект реквайрится и модуль реквайрится.

Google
Alexey
06.10.2016
10:04:24
хорошо, а почему тебе module.parent не подошел?

там есть проблема с кэшем, но в целом, если это первое обращение, то путь ты получишь

Nikita
06.10.2016
10:05:03
хорошо, а почему тебе module.parent не подошел?
parent может быть например src/index.js. а это не корень проекта

Котяй Негодяй
06.10.2016
10:05:16
хорошо, а почему тебе module.parent не подошел?
module.parent мне покажет, откуда меня вызвали, но это не даст гарантии, что вызывающий файл лежит в корне проекта.

Nikita
06.10.2016
10:05:32
так чем мое решение не подошло?)

Котяй Негодяй
06.10.2016
10:05:38
Там вообще файлов может не быть.

Но равный по костыльности вариант — поиск package.json, тогда уж.

Nikita
06.10.2016
10:08:04
package.json тебе ничего не даст)

ты сам сказал этот модуль могут подключать через другой

в package.json может не быть зависимости

а вообще в таких случаях делают .*rc файл, по которому детектят что нужно

Котяй Негодяй
06.10.2016
10:09:54
http://stackoverflow.com/questions/10265798/determine-project-root-from-a-running-node-js-application

Оказывается, всё очень сложно. =)

Alexey
06.10.2016
10:10:52
круто

Котяй Негодяй
06.10.2016
10:11:15
Короче, я воспользуюсь app-root-path, и не буду трахать мозг.

Он, вроде, не слишком толст.

Семен
06.10.2016
10:53:36
Кто-то с loopback на короткой ноге? Как кастомную валидацию мутите? Попробовал поиграть с Models.validateAsync, а контекст получить не могу, чтобы провалидировать поле, как жить?

Сергей
06.10.2016
10:54:20
перейти на Rails?

Семен
06.10.2016
10:54:47
Одна хуйня

Страница 253 из 2748