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

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

新規登録して質問してみよう
ただいま回答率
85.35%
npm

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

Lodash

Lodashは、JavaScriptのユーティリティライブラリ。Underscoreの派生ライブラリで、配列・オブジェクトの操作に便利です。また、コードの可読性も高めることができます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

2263閲覧

npm commandを使ったlodashのupdateができない

Sean2014

総合スコア59

npm

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

Lodash

Lodashは、JavaScriptのユーティリティライブラリ。Underscoreの派生ライブラリで、配列・オブジェクトの操作に便利です。また、コードの可読性も高めることができます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2020/07/27 13:07

編集2020/07/28 09:35

GitHub上で先日Dependency alertが届きました。Locashのバージョンが古いのでアップデートが必要なようです。(添付画像参照)

Dependabot alert

npmコマンドnpm i --save lodashを実行した所、2つ目の添付画像のように+ lodash@4.17.19と表示されていたのでうまくいったと思ったのですが、

Lodash updated

GitHubに戻って確認してみたらまだ1枚目の添付画像と同じアラートが残っていました。アップデートがGitHub上で反映されていないのかなと思って自分のローカル環境でpackage-lock.jsonファイルをVisual Studio Codeで開いて確認してみたのですが、そこでもバージョンが4.17.13とAlertで要求されていた基準を下回ったままでした。

Lodash on VS Code

なぜコマンド上ではアップデートができたように見えるのに実際には最新版にアップデートされていないのでしょうか?

【追記1】

package-lock-onlyをやってみた時のスクリーンショットです。

Package lock only

【追記2】
package.json

{ "name": "pictionarizer-ui", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.11.1", "@testing-library/react": "^10.4.7", "@testing-library/user-event": "^12.0.15", "@types/yup": "^0.29.3", "axios": "^0.19.2", "formik": "^2.1.5", "lodash": "^4.17.19", "lodash.update": "^4.10.2", "moment": "^2.27.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", "react-scripts": "3.4.1", "react-toastify": "^6.0.8", "websocket-extensions": "^0.1.4", "yup": "^0.29.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@types/jest": "^26.0.7", "@types/node": "^14.0.26", "@types/react": "^16.9.43", "@types/react-dom": "^16.9.8", "@types/react-router-dom": "^5.1.5", "typescript": "^3.9.7" } }

package-lock.json

"@babel/core": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", "requires": { "@babel/code-frame": "^7.8.3", "@babel/generator": "^7.9.0", "@babel/helper-module-transforms": "^7.9.0", "@babel/helpers": "^7.9.0", "@babel/parser": "^7.9.0", "@babel/template": "^7.8.6", "@babel/traverse": "^7.9.0", "@babel/types": "^7.9.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, .....

https://github.com/Shinichi1125/Pictionarizer/blob/master/pictionarizer-ui/package-lock.json

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

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

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

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

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

guest

回答1

0

ベストアンサー

修正した回答

1 lodash vulnerability found in pictionarizer-ui/yarn.lock

原因は npm ではなく yarn のようです

yarn コマンドを実行して yarn.lock ファイルを更新することで
Dependency alert が解消することが期待できます
yarn install | Yarn

元の回答

公式ドキュメントを確認しましたが、この振る舞いについては特に記述は見つかりませんでした
(そして、npm 5 がリリースされているため、すでに --save オプションに関する記述はなくなっていました)
npm-install | npm Documentation

ただ、^4.17.13 は、4.17.13 以上 5.0.0 未満を表しており、
4.17.19 はこの条件を満たしています
よって、4.17.19 をインストールするために package.json の更新の必要はないとも言えます

npm 5 であれば、
npm update コマンドで下限のバージョンを上げることができるようです:

npm-update | npm Documentation

As of npm@5.0.0, the npm update will change package.json
to save the new version as the minimum required dependency.

追記

なるほど、更新の必要はなさそうですか。
GitHub上(添付画像1枚目)でlow severityと書かれていますが、
これって別に無視しちゃってよさそうなんでしょうか。

いや、更新はした方がいいです

4.17.19 をインストールするのに package.json を更新する必要はない」
という意味です
^4.17.13 という定義は
「何らかの理由で新しいバージョンをインストールできないときに
4.17.13 までは過去バージョンをインストールしても問題ない」
という指定をしてしまっていることを意味します

4.17.19 に満たないバージョンはセキュリティの問題があることが通知されていますので、
^4.17.19 となるように npm update を実行するべきです

さきほど確認してみたら、
package.jsonは4.17.19になっているのに対して、
package-lock.jsonの中には^4.17.13という定義をされている箇所が
いくつかあるようでした。
"@babel/core": {"requires": {"lodash": "^4.17.13", ...}} みたいな感じです。
たぶんこれらが「バージョンが古い」とみなされているのかなと思います。
npm updateを実行した後でもこうだったので、
何かnpm update以外にもやらなければいけない事があるのでしょうか。

次のコマンドを実行すると、package-lock.json が更新されます:

console

1npm install --package-lock-only

npm-install | npm Documentation

The --package-lock-only argument will only update the package-lock.json,
instead of checking node_modules and downloading dependencies.

投稿2020/07/27 13:56

編集2020/07/28 12:58
y_shinoda

総合スコア3272

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

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

Sean2014

2020/07/27 16:32

回答ありがとうございます!なるほど、更新の必要はなさそうですか。GitHub上(添付画像1枚目)でlow severityと書かれていますが、これって別に無視しちゃってよさそうなんでしょうか。
y_shinoda

2020/07/27 16:44

回答に追記しました
Sean2014

2020/07/27 16:56

補足説明ありがとうございます。さきほど確認してみたら、package.jsonは4.17.19になっているのに対して、package-lock.jsonの中には^4.17.13という定義をされている箇所がいくつかあるようでした。"@babel/core": {"requires": {"lodash": "^4.17.13", ...}} みたいな感じです。たぶんこれらが「バージョンが古い」とみなされているのかなと思います。npm updateを実行した後でもこうだったので、何かnpm update以外にもやらなければいけない事があるのでしょうか。
y_shinoda

2020/07/27 17:30

回答を修正しました 他の言語のパッケージマネージャーだと update コマンドは lock ファイルの更新まで行うのですが、 npm の場合は update では lock の更新まで行われないようです GitHub の Issues でも揉めてますね・・ https://github.com/npm/npm/issues/16866
Sean2014

2020/07/27 17:56

追記ありがとうございます。ご提示いただいたコマンドもやってみたのですが、残念ながら元の質問の追記の添付画像のように、package-lock.jsonは更新されていないようでした。。。
y_shinoda

2020/07/28 01:45

こちらで確認したところ、 npm update の時点で package.json も package-lock.json も 4.17.19 に更新されました こちらで使っている npm のバージョンは 6.9.0 でした npm はどのバージョンをお使いでしょうか? また、差し支えなければ package.json と package-lock.json を 画像ではなく Markdown のコードブロックを使い json として質問欄に追記いただければ こちらでも検証することはできます
Sean2014

2020/07/28 09:39

npmのバージョンは6.13.4です。力技で1:node_modulesを消す、2:package-lock.jsonを消す、3:もう1回npm installする、といったのも試してみたのですがこれもダメでした。 さきほど質問欄にpackage.json と package-lock.jsonのコードを追記しました。package-lock.jsonの方は非常に長いので一部のみ抜粋してあります。GitHubのリンクも載せておきましたので、package-lock.jsonファイルの全体を見る必要がある場合はそちらから確認できます。
Sean2014

2020/07/28 18:00

さきほど修正後の回答でご指摘いただいたようにYarn.lockを更新したらGitHubのアラートがようやく消えていました!粘り強くアドバイスをくださって本当にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問