Npm script windows path

Исправление пути npm в Windows 8 и 10

много гуглил, пробовал переустановить узел.в JS с помощью официального установщика, но мой НПМ маршруты по-прежнему не работает.

это не работает

Я получаю сообщение об ошибке говоря отсутствует модуль npm-cli.js

2 часа гуглить позже я обнаружил обходной путь
А не просто’npm‘ я типа

но как я могу исправить свою установку nodejs, чтобы я мог просто ввести «npm»?

8 ответов:

вам нужно добавить C:\Program Files\nodejs к переменной среды PATH. Для этого выполните следующие действия:

  1. используйте глобальный поиск очарование для поиска «Переменные среды»
  2. Нажмите кнопку «изменить системные переменные среды»
  3. нажимаем «Переменные среды» в диалоговом окне.
  4. в поле» системные переменные » найдите путь и отредактируйте его, чтобы включить C:\Program Files\nodejs . Убедитесь, что он отделен от любых других путей с помощью ; .

вы придется перезапустить все открытые в настоящее время командные подсказки, прежде чем он вступит в силу.

npm config get prefix

и просто в качестве будущей ссылки, это путь, который я добавил В Windows 10:

зайдите в Панель управления -> Система -> Дополнительные параметры системы переменные среды.

отсюда найдите переменную path, перейдите в конец строки и вставьте «C:\Program Files\nodejs\node_modules\npm\bin «(измените путь к каталогу, в котором вы его установили, например, если вы специально установили его в любом месте, измените его)

Я использую Windows 10 — 64 бита, поэтому я бегу. Команды:

  • NVM arch 64 (чтобы сделать по умолчанию 64-разрядный исполняемый файл)
  • список nvm (чтобы перечислить все доступные версии узлов)
  • nvm установить 8.0.0 (для загрузки узла версии 8.0.0-вы можете выбрать любой)
  • nvm использовать 8.0.0 (чтобы использовать этот конкретный версия)

в моем случае мне пришлось просто переключиться на версию 8.5.0 а затем снова переключиться на 8.0.0 и это было исправлено. По-видимому, NVM устанавливает переменные пути всякий раз, когда вы делаете этот переключатель.

Я использовал командлет и перейдите к пути, на который вы хотите переключить файлы npm. Введите npm root-g чтобы узнать, на какой текущий путь установлен ваш npm. Следующее использование npm config set prefix и ваш путь npm будет изменен на любой каталог, в котором вы сейчас находитесь.

попробуйте этот чувак, если вы используете Windows:

1.) Поиск переменных среды в поле поиска меню Пуск.
2.) Нажмите на него, а затем перейдите к Environment Variables.
3.) Нажмите путь, нажмите кнопку Edit
4.) Нажмите новая и попробуйте скопировать и вставить это: C:\Program файлы\nodejs\node_modules\npm\bin

если вы получили сообщение об ошибке. Число 4.) Нажмите кнопку Создать, а затем просмотрите bin папка

  • вы также можете посетить этой ссылке для получения дополнительной информации.

Это сработало для меня: 1. npm root-g (чтобы увидеть текущий npm установлен) 2. npm config set prefix (изменить путь)

У меня была эта проблема на 2 компьютерах в моем доме, используя Windows 10 каждый. Проблема началась, когда мне пришлось изменить несколько переменных среды для проектов, над которыми я работал в Visual studio 2017 и т. д. Через несколько месяцев, вернувшись к использованию node js и npm, у меня снова возникла эта проблема, и не помогли решения выше. Я видел комментарий Шона к решению Яра, и я смешал оба решения: 1) в окне переменные среды у меня была одна дополнительная переменная, которая содержала это значение: %APPDATA%\npm. Я удалил его, и проблема исчезла!

Как настроить переменные окружения (NODE_PATH)?

Постоянно сталкиваюсь с проблемой NODE_PATH
К примеру, в package.json прописано

Читайте также:  How to compile files in linux

Сборка спотыкается на NODE_PATH
«NODE_PATH не является внутренней или внешней командой, исполняемой программой. «

Как я понимаю проблема в том, что сборка писалась на UNIX системах, а у меня Виндоус.
Нужно задать переменные окружения
Вроде задал

Но не помогает.

  • Вопрос задан более трёх лет назад
  • 15156 просмотров

Каждое значение в scripts — это, по сути, скрипт операционной системы. Все верно, написаны они для *nix, и под виндой работать не будут даже при всех переменных окружения, потому что конструкция типа NODE_PATH=$NODE_PATH:./shared не является валидной для виндового интерпретатора командной строки. Надо исправить на что-то такое: SET NODE_PATH=%NODE_PATH%;.\shared . Скорее всего, путь к папке shared должен быть абсолютным.
Команду build надо поменять как-то так:

Другие способы:
1) сделать форк, написать на JS кросс-платформенные скрипты, которые запускают нужные вещи с нужными параметрами, положить их в папку bin проекта и послать pull-request
2) одуматься и перейти на линукс.

scripts

Table of contents

The «scripts» property of of your package.json file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running npm run-script or npm run for short. Pre and post commands with matching names will be run for those as well (e.g. premyscript , myscript , postmyscript ). Scripts from dependencies can be run with npm explore

Pre & Post Scripts

To create «pre» or «post» scripts for any scripts defined in the «scripts» section of the package.json , simply create another script with a matching name and add «pre» or «post» to the beginning of them.

Life Cycle Scripts

There are some special life cycle scripts that happen only in certain situations. These scripts happen in addtion to the «pre» and «post» script.

  • prepare , prepublish , prepublishOnly , prepack , postpack

prepare (since npm@4.0.0 )

  • Runs BEFORE the package is packed
  • Runs BEFORE the package is published
  • Runs on local npm install without any arguments
  • Run AFTER prepublish , but BEFORE prepublishOnly
  • NOTE: If a package being installed through git contains a prepare script, its dependencies and devDependencies will be installed, and the prepare script will be run, before the package is packaged and installed.

prepublish (DEPRECATED)

prepublishOnly

  • Runs BEFORE the package is prepared and packed, ONLY on npm publish .

prepack

  • Runs BEFORE a tarball is packed (on » npm pack «, » npm publish «, and when installing a git dependencies).
  • NOTE: » npm run pack » is NOT the same as » npm pack «. » npm run pack » is an arbitrary user defined script name, where as, » npm pack » is a CLI defined command.

postpack

  • Runs AFTER the tarball has been generated and moved to its final destination.

Prepare and Prepublish

Deprecation Note: prepublish

Since npm@1.1.71 , the npm CLI has run the prepublish script for both npm publish and npm install , because it’s a convenient way to prepare a package for use (some common use cases are described in the section below). It has also turned out to be, in practice, very confusing. As of npm@4.0.0 , a new event has been introduced, prepare , that preserves this existing behavior. A new event, prepublishOnly has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on npm publish (for instance, running the tests one last time to ensure they’re in good shape).

Читайте также:  Mac os extended journaled hfs

See https://github.com/npm/npm/issues/10074 for a much lengthier justification, with further reading, for this change.

Use Cases

If you need to perform operations on your package before it is used, in a way that is not dependent on the operating system or architecture of the target system, use a prepublish script. This includes tasks such as:

  • Compiling CoffeeScript source code into JavaScript.
  • Creating minified versions of JavaScript source code.
  • Fetching remote resources that your package will use.

The advantage of doing these things at prepublish time is that they can be done once, in a single place, thus reducing complexity and variability. Additionally, this means that:

  • You can depend on coffee-script as a devDependency , and thus your users don’t need to have it installed.
  • You don’t need to include minifiers in your package, reducing the size for your users.
  • You don’t need to rely on your users having curl or wget or other system tools on the target machines.

npm on windows can’t run scripts with «.», relative paths «../» #13789

Comments

wclr commented Aug 29, 2016 •

On windows npm can not run scripts like

Should replace it with ..\\

But it is not crossplatfrom, I think can be fixed

How can the CLI team reproduce the problem?

place in script task something with «../» or «./» on WINDOWS.

This seem to be a like issue in 2014:
#4403

This is really very limiting.

The text was updated successfully, but these errors were encountered:

wclr commented Aug 29, 2016

I believe it should be fixed something around here

sh = process . env . comspec || ‘cmd’

derekgreer commented Apr 12, 2017

Is there a cross-environment work around for this issue?

I can prefix commands with $ (unix) or $ for windows, but neither is compatible in all environments. If an npm environment variable such as npm_package_location existed then that would help tremendously, but no such variable seems to exist.

wclr commented Apr 12, 2017 •

the most cross-platfrom is to use WSL on windows 10, and BTW there was a PR in yarn that solved OP issue on Windows.

derekgreer commented Apr 12, 2017

@whitecolor Thanks for the recommendation, but I’m really more interested in simple, node-based solutions to the issue until the npm team can address this.

It does appears that the cross-run package can be used to execute commands with a relative path.

wclr commented Apr 12, 2017

https://github.com/yarnpkg/yarn is actually kind of node-base solution 😄 and not more complex then npm. I wanted make a PR here, but I did make it in yarn eventually.

derekgreer commented Apr 12, 2017

When I stated that I was looking for a simple, node-based solution, that was only in reference to running node with WSL. I guess I should have said «npm-based solution» to be specific. Yes, yarn, gulp, and grunt, etc. are all node-based alternatives, but I was really just inquiring about work-arounds to addressing this issue within the context of using npm scripts.

wclr commented Apr 13, 2017 •

yarn is a full alternative to npm, it has all capabilities of npm client and it is fully compatible with it (it just claims to be faster and more reliable in terms of forcing immutability on the versions of installed packages), you may run your scripts using yarn run your-script-in-package-json like you do with npm, you don’t even have to use yarn to install packages in current project.

Читайте также:  Картридер для mac os

npm-robot commented Jun 16, 2017

We’re closing this support issue as it has gone three days without activity. The npm CLI team itself does not provide support via this issue tracker, but we are happy when users help each other here. In our experience once a support issue goes dormant it’s unlikely to get further activity. If you’re still having problems, you may be better served by joining package.community and asking your question there.

For more information about our new issue aging policies and why we’ve instituted them please see our blog post.

derekgreer commented Jun 16, 2017

The npm CLI team itself does not provide support via this issue tracker

I’m a bit confused. Does this mean that the npm CLI team doesn’t use github to track it’s issues? If not, where is the proper place to report the issue of it not supporting relative paths in Windows? Certainly package.community wouldn’t be the place for that.

wclr commented Jun 17, 2017

It is new «deep AI» that decides what issues to close or which are worth working on.

Немного о npm-scripts

Если кто не знаком с предметной областью, то NPM — node package manager (аналог bundler/composer/easy_install/nuget) – средство для управления зависимостями в вашем Node.js проекте, что по совместительсву может выполнять некоторое количество полезных функций. Написан Айзеком Шлютером, который достаточно радикальным образом продвигал в начале своей истории (рассылая всем существующим Node.js проектам пулл-реквесты с добавлением package.json — манифестом зависимостей).

Все нижеприведенные вещи известны многим, но для некоторых это может стать приятным открытием, что сэкономит некоторое количество набираемых в символов.

pre-/post- myscript

Иногда, в целях автоматизации некоторой рутины, но при малом желании тащить за собой N мегабайт зависимостей в виде разных билд-инструментов, а в некоторых случаях под впечатлением от статьи за авторством @substack’а, разработчики могут начать в своих npm script’ах писать длиннющие строки, состоящие из перечня команд и ‘&&’. По крайней мере, одним из выходов может служить разбитие одной сложной команды на несколько более простых. Самым замечательным является тот факт, что когда вы запускаете свой скрипт npm run-script myscript , npm также попытается выполнить команды, что занесены в premyscript и postmyscript перед и после выполнения вашего скрипта соответственно. Таким образом, 3 сложных команды, что раньше составляли один скрипт, можно просто разнести в три скрипта.

Код, что отвечает за это, довольно таки прост, и пытается добавить к названию команды pre-/post- и запустить их в случае, если это сама по себе не pre/post команда и не команда ‘restart’, что обрабатывается особым способом.

npm run вместо run-script, npm i вместо npm install

Заголовок, в принципе, всё описывает: очень часто вместо «npm run-script» можно увидеть «npm run», или «npm i», что соответствует запуску команды «npm install». Код, что делает это, прост: используя библиотеку abbrev-js все команды из списка превращаются в огромный словарь, в котором ключами служат сокращения слов, вида:

И запускает соответствующую команду.

Нет необходимости писать пути для исполняемых файлов в скриптах

Иногда npm скрипты используются, чтобы запускать локально установленные npm пакеты с бинарниками. Но часто люди не знают об одной приятной особенности: npm во время исполнения добавляет папку node_modules/.bin в аналог переменой PATH. То есть, если у вас локально установленная mocha, вам не нужно писать

А достаточно лишь написать «test»: «mocha» . Приятным бонусом этого является то, что разработчики под виндоус перестанут жаловаться на то, что у них ничего не запускается (причина в том, что используются разные разделители в пути).

Оцените статью