#javascript #node.js
#javascript #node.js
Вопрос:
Я работал над проектом NodeJS и наткнулся на эту строку:
"scripts": {
"dev": "set NODE_PATH=./libamp;amp; node lib/server.js",
},
Как я понимаю, set NODE_PATH изменяет путь к узлу, чтобы функции require могли искать другой путь. Если я попытаюсь запустить set NODE_PATH=./lib в отдельной строке, а затем запустить скрипт, он не будет работать.
Работает ли это только при выполнении в on line?
Как это работает в конечном итоге?
Где я могу найти документы о функции SET?
Комментарии:
1. можете ли вы показать
in a separate line
, как вы пытались2. установите NODE_PATH=./lib, а затем node lib/server.js
3. сценарии выполняются в оболочке (при условии, что вы находитесь в linux, аналогично для Windows),
set
устанавливает именованную переменную env для этого экземпляра оболочки. в отдельной строке я предполагаю две разные команды скрипта? если это так, то эти два скрипта выполняются в 2 разных оболочках, поэтому все, что выset
используете в одном, недоступно для другого4. Укажите это в ответе на голосование. Также источник?
5.
set
происходит изos
, так что это может быть windows, или linux, или какой-то другой * nix. Позвольте мне попытаться составить ответ
Ответ №1:
npm
скрипты shell scripts
— это те, которые выполняются в оболочке хост-машины. set
команда поступает с хоста os
(поэтому вам следует проверить кросс-платформенную совместимость)
Работает ли это только при выполнении в on line?
Да. set
устанавливает переменную env для этого экземпляра оболочки. Он доступен только для этого экземпляра и его подоболочек.
Если я попытаюсь запустить set NODE_PATH=./lib в отдельной строке
Я предполагаю, что это означает две разные команды скрипта (потому что json не допускает многострочности). Если это так, эти два скрипта выполняются в 2 разных экземплярах оболочки, поэтому все, что вы set
используете в одном, недоступно для другого
Как это работает в конечном итоге?
Выполняет сценарий оболочки
Где я могу найти документы о функции SET?
Вот ссылка на man
of set
для linux. Вы можете найти свой Google os
, если вы не используете Linux.