tag:crieit.net,2005:https://crieit.net/tags/create-react-app/feed
「create-react-app」の記事 - Crieit
Crieitでタグ「create-react-app」に投稿された最近の記事
2022-07-14T23:32:07+09:00
https://crieit.net/tags/create-react-app/feed
tag:crieit.net,2005:PublicArticle/18238
2022-07-14T23:32:07+09:00
2022-07-14T23:32:07+09:00
https://crieit.net/posts/use-clipboard-api-by-react-20220714
React (create-react-app) で Clipboard API にアクセスするために localhost:3000 をhttpsにする
<h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/flu_bit/items/659a59260446117e9548">クリップボードにテキストをコピーするボタンの実装 - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://mseeeen.msen.jp/copy-text-to-clipboard-with-javascript-in-2021/">JavaScript でクリップボードにテキストをコピーする (2021年版) | MSeeeeN | 大阪発 IT メディア by MSEN</a></li>
</ul>
<p>React アプリ(<code>create-react-app</code>(<code>react-scripts</code>))で Clipboard API を使おうとしたところ、次のエラーが発生してしまいました。</p>
<blockquote>
<p>Uncaught TypeError: Cannot read property ‘writeText’ of undefined ...</p>
</blockquote>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://owatata.com/2020/10/06/%E3%80%90javascript%E3%80%91navigator-clipboard-writetex%E3%81%A7-uncaught-typeerror-cannot-read-property-writetext-of-undefined/">【javascript】navigator.clipboard.writeTextで Uncaught TypeError: Cannot read property ‘writeText’ of undefined – オワタ太のブログ</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://propg.ee-mall.info/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/javascript/js-http%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AFnavigator-clipboard-writetext%E3%81%8C%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B/">[JS] http環境ではnavigator.clipboard.writeTextがエラーになる - プロプログラマ -Flex,Air,C#,Oracle,HTML5+JS-</a></li>
</ul>
<p>調べてみたところ、 https でないと使用できないようです。</p>
<p>そこで通常 <code>npm start</code> で自動起動してくる <code>http://localhost:3000/</code> を <code>https://localhost:3000/</code> にする必要に迫られたので、その方法を書き留めておきます。</p>
<h2 id="対処"><a href="#%E5%AF%BE%E5%87%A6">対処</a></h2>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/sutara79/items/21a068494bc3a08a4803">XAMPP for WindowsでSSLを有効にする - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://kdnakt.hatenablog.com/entry/2020/06/07/170000">Create React Appで作成したアプリをローカルのMacBook上でHTTPSで動作させる - kdnakt blog</a></li>
</ul>
<p>今回は XAMPP の入っているPCでそのオレオレSSL証明書が既にあったので、それを流用します。</p>
<p>証明書を <code>server.crt</code>、 秘密鍵を <code>server.key</code> という名前でコピーして、 <code>create-react-app</code> プロジェクト配下に設置します(今回は <code>ssl/</code> ディレクトリを切りました)。</p>
<p>次に、 <code>.env</code> に次の3行を足して再度 <code>npm start</code> します。</p>
<pre><code>HTTPS=true
SSL_CRT_FILE=./ssl/server.crt
SSL_KEY_FILE=./ssl/server.key
</code></pre>
<p>これで <code>https://localhost:3000/</code> でアプリにアクセスでき、無事 Clipboard API も動かすことができました。</p>
<h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2>
<h3 id="Clipboard API"><a href="#Clipboard+API">Clipboard API</a></h3>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/flu_bit/items/659a59260446117e9548">クリップボードにテキストをコピーするボタンの実装 - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://mseeeen.msen.jp/copy-text-to-clipboard-with-javascript-in-2021/">JavaScript でクリップボードにテキストをコピーする (2021年版) | MSeeeeN | 大阪発 IT メディア by MSEN</a></li>
</ul>
<h3 id="Uncaught TypeError: Cannot read property ‘writeText’ of undefined"><a href="#Uncaught+TypeError%3A+Cannot+read+property+%E2%80%98writeText%E2%80%99+of+undefined">Uncaught TypeError: Cannot read property ‘writeText’ of undefined</a></h3>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://owatata.com/2020/10/06/%E3%80%90javascript%E3%80%91navigator-clipboard-writetex%E3%81%A7-uncaught-typeerror-cannot-read-property-writetext-of-undefined/">【javascript】navigator.clipboard.writeTextで Uncaught TypeError: Cannot read property ‘writeText’ of undefined – オワタ太のブログ</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://propg.ee-mall.info/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/javascript/js-http%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AFnavigator-clipboard-writetext%E3%81%8C%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B/">[JS] http環境ではnavigator.clipboard.writeTextがエラーになる - プロプログラマ -Flex,Air,C#,Oracle,HTML5+JS-</a></li>
</ul>
<h3 id="https化"><a href="#https%E5%8C%96">https化</a></h3>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/sutara79/items/21a068494bc3a08a4803">XAMPP for WindowsでSSLを有効にする - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://kdnakt.hatenablog.com/entry/2020/06/07/170000">Create React Appで作成したアプリをローカルのMacBook上でHTTPSで動作させる - kdnakt blog</a></li>
</ul>
arm-band
tag:crieit.net,2005:PublicArticle/18235
2022-07-12T23:57:06+09:00
2022-07-12T23:57:06+09:00
https://crieit.net/posts/create-react-app-ignores-x-high-severity-vulnerabilities-20220713
create-react-app(react-scripts) の X high severity vulnerabilities の警告について
<h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2>
<p><code>create-react-app</code>(<code>react-scripts</code>) で作ったアプリに対して、パッケージ追加等をすると次のような脆弱性の警告が表示されます。</p>
<blockquote>
<p>up to date, audited 1485 packages in 5s</p>
<p>197 packages are looking for funding<br />
run <code>npm fund</code> for details</p>
<p>6 high severity vulnerabilities</p>
<p>To address all issues (including breaking changes), run:<br />
npm audit fix --force</p>
<p>Run <code>npm audit</code> for details.</p>
</blockquote>
<p>脆弱性がある、と言われるとさすがに放置はできないのでどうにかできないものかと調べました。</p>
<h2 id="対応"><a href="#%E5%AF%BE%E5%BF%9C">対応</a></h2>
<p>結論から言うと、今回のケースでは無視して良い、とのことでした。</p>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://zenn.dev/appare45/articles/7f667031aab94b">create-react-appでは脆弱性の警告が出るが無視して良い</a></li>
</ul>
<p>理由としては</p>
<ul>
<li>警告の発出元である <code>npm audit</code> 自体の警告が不正確</li>
<li>今回のケース(<code>create-react-app</code>(<code>react-scripts</code>))では依存パッケージはビルドツールとして用いられており、殆どの場合は成果物に含まれるわけではない (と思われる)</li>
<li>ビルドツールとして脆弱性があればアップデートがあるはず</li>
</ul>
<p>といったところのようです。</p>
<p>言われて見れば確かに、というところですね。</p>
<p>それでも気になる場合は</p>
<ul>
<li><code>dependencies</code> にある <code>react-scripts</code> を <code>devDependencies</code> に移動させる
<ul>
<li><code>npm audit --production</code> を使用する</li>
</ul></li>
<li>パッケージインストール時は <code>npm install --no-audit</code> で <code>audit</code> を使用しないように指定する</li>
</ul>
<p>とすることで警告を表示させなくすることができるとのこと。</p>
<h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://zenn.dev/appare45/articles/7f667031aab94b">create-react-appでは脆弱性の警告が出るが無視して良い</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/riversun/items/7f1679509f38b1ae8adb">npmパッケージのvulnerability対応フロー - Qiita</a></li>
</ul>
arm-band