質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

2回答

9649閲覧

npmでローカルインストールしたnode_modulesにパスが通らない

hrck19

総合スコア13

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

3クリップ

投稿2019/01/09 14:57

###問題の背景

・元々node.js v8.9がインストールされていましたが、(npmのバージョンは忘れました)
グローバルインストールしているnode_modulesをきれいにしたいこと、そしてnode.js自体のバージョンを上げたいことからアンインストール→再度新規でインストールを行いました。(やり方がまずかったことは承知しておりますので一旦無視してください)

・アンインストールの際は以下を実施しました。
1.「プログラムと機能」からNode.jsをアンインストールする。
2.下記フォルダを手動で削除する
%USERPROFILE%\AppData\Roaming\npm
%USERPROFILE%\AppData\Roaming\npm-cache

質問内容

題名の通り再度インストールしたnpmでローカルインストールしたnode_modulesにパスが通りません。
かつてのバージョンであればローカルインストールしたものはパスが通っていたと記憶しております。
環境変数の設定が漏れているのだと思いますが、何を追加すればいいかわかりません。
もしくは再インストールなど別の方法での問題解決でも構いません。

ご教示お願い致します。

発生している問題・エラーメッセージ

C直下のTempにてAngular-CLIをローカルインストールし、
ngコマンド実行時のエラーです。
再インストール前はnpm install後、なんの設定もなくngコマンドが実行できていたと記憶しています。

C:\Temp>npm install @angular/cli npm WARN saveError ENOENT: no such file or directory, open 'C:\Temp\package.json' npm WARN enoent ENOENT: no such file or directory, open 'C:\Temp\package.json' npm WARN Temp No description npm WARN Temp No repository field. npm WARN Temp No README data npm WARN Temp No license field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) + @angular/cli@7.2.0 added 93 packages from 84 contributors in 21.409s C:\Temp>ng -v 'ng' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

確認したこと

ひとまず以下は確認しました。

$ npm bin
C:\Temp\node_modules.bin
$ npm bin -g
C:\Users%UserName%\AppData\Roaming\npm

node.js関連の環境変数
NODE_PATH=C:\Users%UserName%\AppData\Roaming\npm\node_modules

補足情報(FW/ツールのバージョンなど)

現在使用しているマシン及び各プログラムのバージョンは以下の通りです。
OS:Windows10 64bit
node.js:v10.15.0
npm : 6.4.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

OSでコマンドを使うという行為は、
環境変数のPATHという文字列を参照して;等の区切り文字でぶった切りディレクトリ名の配列を取り出します。
先頭(左)から順番にディレクトリ内へアクセスしてコマンド名と同様の実行ファイルを探していき、
実行ファイルが見つかれば実行、なければ「そんなコマンドありませんよ」というエラーを返すというものです。

Windowsの場合はファイル名そのものの他にも.lnkや.exeなどの拡張子付きのファイルも実行したりしなかったりします。
というわけで、結論から言えばグローバルオプション-gをつければパスの通ったディレクトリに実行ファイルがコピーされるはずで、それを元に実行します。

C:\Temp>npm install -g @angular/cli

npmに於けるローカルインストールというのはローカルマシンではなく、
カレントプロジェクト、もしくはカレントディレクトリを指します。

つまりコマンド打ち込んだディレクトリ内でnode_modulesディレクトリを作ってその中にnpmから落としてきたモジュールを投げ込む作業ですよ。
パスが通ってないところにインストールしてコマンドが使えるわけないじゃないですか。


npm run xxxという風にnpm-scripts越しに実行された場合、
PATH文字列の先頭だか末尾だかにpackage.jsonのあるディレクトリ/node_modules/binみたいなパスが付与されます。

-Dオプション付きでインストールすると、実行ファイルが存在するモジュールの場合、このディレクトリ内に実行ファイルを設置してくれます。
こういう経緯があるのでローカルインストールしているのにnpm-scrips越しだとあたかも普通のコマンドの様に認識してくれるのです。
gulpやwebpackなんかは-Dの開発者用オプションを使ってインストールする癖をつけてください。

ただし、今回やりたいのはangularのcliのようですので-gオプションが適切でしょうね。

投稿2019/01/10 04:07

編集2019/01/10 04:10
miyabi-sun

総合スコア21177

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

もともとローカルの node_modules/.bin には npm-scripts を経由しなければパス通らない仕様ですよ。
おそらく以前はグローバルインストールしていたのだと思います。

また Scaffold を用意するツールなどは、プロジェクトがそれ自体に依存していないのならグローバルインストールするべきです。
どうしてもグローバルインストールしたくなかったりお試ししたい場合は npx コマンド使うのもありです。

投稿2019/01/09 15:50

yhg

総合スコア2161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問