Node.js を使用してクロスプラットフォームの spawn ステートメントを作成する方法の詳細な説明
Node.js の最も強力な点は「クロスプラットフォーム」です。コーディング時に少し注意すれば、コードは Windows、Linux、OSX プラットフォームで動作します。以下の記事では、Node.js を使用してクロスプラットフォームのスポーン ステートメントを作成する方法を主に紹介します。必要な友人は参照してください。
はじめに
Node.js はクロスプラットフォームです。つまり、Windows、OSX、Linux プラットフォームで実行できます。多くの Node.js 開発者は OSX で開発し、コードを Linux サーバーにデプロイします。 OSX と Linux はどちらも Unix をベースにしているため、多くの共通点があります。 Windows は、Node.js が公式にサポートされているプラットフォームでもあり、コードを正しい方法で記述すれば、何のストレスもなくさまざまなプラットフォームで実行できます。
Node.js の child_process モジュールの下に spawn 関数があり、これを使用してシステム上のコマンドを呼び出すことができます。たとえば、Linux、macOS、その他のシステムでは、
const spawn = require('child_process').spawn; spawn('npm', { stdio: 'inherit' });
を実行して呼び出すことができます。 npmコマンド。
ただし、同じステートメントを Windows で実行するとエラーが報告されます。
Error: spawn npm ENOENT at exports._errnoException (util.js:855:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) at onErrorNT (internal/child_process.js:344:16) at nextTickCallbackWith2Args (node.js:455:9) at process._tickCallback (node.js:369:17) at Function.Module.runMain (module.js:432:11) at startup (node.js:141:18) at node.js:980:3
Windows では npm を実行すると実際には npm.cmd のバッチ処理が実行され、Windows では .cmd、.bat のバッチ処理が cmd.exe から分離できないためです。 この説明 サーバーは独立して実行されます。 。
そのため、明示的に cmd
spawn('cmd', ['/c', 'npm'], { stdio: 'inherit' });
を呼び出すか、spawn 関数を呼び出すときに使用し、暗黙的に cmd を呼び出すためにシェル オプションを true に設定する必要があります (このオプションは Node.js v6 バージョンから追加されました)
spawn('npm', { stdio: 'inherit', shell: true });
さらに、Linux、macOS、その他のシステムではシェル オプションを設定する必要はありませんが、シェルを true に設定してもコマンドの実行は妨げられませんが、追加のコマンドが生成されます。不要なシェルプロセスが発生し、パフォーマンスに影響を与えます。
そのため、追加のオーバーヘッドを加えずにクロスプラットフォームの spawn コマンドを書きたい場合は、次のように書くことができます
const process = require('process'); const { spawn } = require('child_process'); spawn('npm', { stdio: 'inherit', // 仅在当前运行环境为 Windows 时,才使用 shell shell: process.platform === 'win32' });
サードパーティモジュールのcross-spawn
クロスプラットフォームの書き込みについてspawn 関数のメソッド。自分でコードを記述するときに処理を実行することに加えて、crossspawn など、関連する詳細をカプセル化するサードパーティのモジュールもあります。
このモジュールを使用すると、spawn 関数を呼び出すときに、現在実行中のプラットフォームに基づいて、指定されたコマンドを実行するシェルを生成するかどうかを自動的に決定できます。
さらに、v6 より前の Node.js バージョンもサポートできます (シェル オプションを使用するには、少なくとも Node.js v6 が必要です)。
コマンドとパラメーターのシバンをサポートします。文字をエスケープする方が便利です。
- インストール
-
npm install cross-spawn
ログイン後にコピー
使用法
const spawn = require('cross-spawn'); spawn('npm', { stdio: 'inherit' });

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

このチュートリアルでは、カスタムGoogle検索APIをブログまたはWebサイトに統合する方法を示し、標準のWordPressテーマ検索関数よりも洗練された検索エクスペリエンスを提供します。 驚くほど簡単です!検索をyに制限することができます

この記事シリーズは、2017年半ばに最新の情報と新鮮な例で書き直されました。 このJSONの例では、JSON形式を使用してファイルに単純な値を保存する方法について説明します。 キー価値ペア表記を使用して、あらゆる種類を保存できます

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

コードプレゼンテーションを強化する:開発者向けの10個の構文蛍光物 ウェブサイトやブログでコードスニペットを共有することは、開発者にとって一般的な慣行です。 適切な構文ハイライターを選択すると、読みやすさと視覚的な魅力を大幅に改善できます。 t

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

コアポイント これは通常、メソッドを「所有」するオブジェクトを指しますが、関数がどのように呼び出されるかに依存します。 現在のオブジェクトがない場合、これはグローバルオブジェクトを指します。 Webブラウザでは、ウィンドウで表されます。 関数を呼び出すと、これはグローバルオブジェクトを維持しますが、オブジェクトコンストラクターまたはそのメソッドを呼び出すとき、これはオブジェクトのインスタンスを指します。 call()、apply()、bind()などのメソッドを使用して、このコンテキストを変更できます。これらのメソッドは、与えられたこの値とパラメーターを使用して関数を呼び出します。 JavaScriptは優れたプログラミング言語です。数年前、この文はそうでした

この記事では、JavaScriptとJQuery Model-View-Controller(MVC)フレームワークに関する10を超えるチュートリアルの厳選された選択を紹介します。これは、新年にWeb開発スキルを向上させるのに最適です。 これらのチュートリアルは、Foundatioのさまざまなトピックをカバーしています
