どんな状況
npm run watchを使って自動的にscssをコンパイルさせようと思ってコマンドを打ったところ下記のようなエラーが出ました
% npm run watch
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /Users/user/projects/construction_management_system/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/Users/user/projects/construction_management_system/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/user/.npm/_logs/2020-05-04T07_12_15_852Z-debug.log
原因
コマンドを打つディレクトリを間違っていました。(筆者はエラーの三行目を見て気がつきました。)
こうなった理由はdockerを使用する時にローカルのディレクトリをsrcという名前で一つ下げているのですが、それに気づかなかったためプロジェクトの一番上のディレクトリでこのコマンドを打ってしまい上記のエラーが出てしまいました。
解決方法
srcにディレクトリを変えて、同じコマンドを打つことでエラーを解消することができました。(下記の手順)
% cd src
% npm run watch
余談
artisanのコマンドを打つ時大抵はdocker-compose exec phpをつけていると思うのですがこのコマンドはローカルのファイルを変えるコマンドなので特につけなくていいみたいです
あとlaravelの使い方として、コンパイルして Users/user/construction_managment_system/src/public/css/app.cssを呼び出してトップページに反映させられなくて苦しんだのですが、下記の呼び出しのコマンドを使うことで無事反映させることができました。
~前略~
<link rel="stylesheet" href="{{ asset('css/style.css') }}">
~後略~