基本的なnode.jsプロジェクトの「属性 'プログラム'は存在しません」


83

単純なnode.jsアプリケーションを作成しました(ここからのソースコードhttps://azure.microsoft.com/en-us/blog/visual-studio-code-and-azure-app-service-a-perfect-fit/

var http = require('http');
http.createServer(function (req, res) {
    console.log('Got request for ' + req.url);
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<h1>Hello Code and Azure Web Apps!</h1>');
}).listen(process.env.PORT);

そして、VSCodeで生成されたlaunch.jsonをクリックしました:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "node",
            "request": "launch",
            "program": "${workspaceRoot}/app.js",
            "stopOnEntry": false,
            "args": [],
            "cwd": "${workspaceRoot}",
            "preLaunchTask": null,
            "runtimeExecutable": null,
            "runtimeArgs": [
                "--nolazy"
            ],
            "env": {
                "NODE_ENV": "development"
            },
            "externalConsole": false,
            "sourceMaps": false,
            "outDir": null
        },
        {
            "name": "Attach",
            "type": "node",
            "request": "attach",
            "port": 5858,
            "address": "localhost",
            "restart": false,
            "sourceMaps": false,
            "outDir": null,
            "localRoot": "${workspaceRoot}",
            "remoteRoot": null
        }
    ]
}

それでも起動すると、次のように表示されます。

属性「プログラム」が存在しません。

誰かが何が悪いのか助けることができますか?

回答:


73

私はあなたが必要とすることを信じて${workspaceRoot}/server.js、ではない${workspaceRoot}/app.jsためprogram。使用しているコードにはapp.jsがありません。これは、その(不適切な表現の)エラーが示していることです。


上記が正解です。"program": "${workspaceRoot}/app.js",エラーの原因となっている行です。この行で参照されているjsファイルは存在しません。
Yiling 2016

私はこれが正しいとは思わない。app.jsには何の問題もありませんが、私は試していませんが、以下のColinの回答は私がいつも行っていることです。
トムスティッケル2017年

この答えは、与えられた質問に対して正しかった。質問に記載されているブログ投稿では、このファイルserver.jsをスタートアップファイルとして使用しています。おそらく、より良い答えは「program属性が間違ったファイルを指している」
でした

28

また、VS Codeがlaunch.jsonファイルを含む.vscodeディレクトリを配置したため、この問題が発生しました。それは1つのディレクトリを作成したので、launch.jsonファイルで定義されているパスにディレクトリを追加する必要がありました。

"プログラム": "$ {workspaceRoot} /myDir/app.js"、

これがお役に立てば幸いです。


別のコンピューターでこの問題が再び発生し、以前に行ったことを忘れて、あなたの答えを見て、これが正しいことを思い出したので、あなたは正しい答えを持っていると思います。
トムスティッケル2017年

はい、これはうまくいきました!これは、ノードプロジェクトがルートではなくサブフォルダー(myDir)にあり、.vscodeフォルダー(launch.jsonが存在する)がルートに作成されている場合に発生します。
Ajay Chebbi 2018

14

私が遭遇した別の問題は、パスが構成さUsing\\Backslashes\\Like\\Soれ、Windowsで正常に機能したことですが、Macでは上記のエラーが発生しました。

(解決策:に変更されました/


1
はい、これは私にとってそれでした。Windowsではバックスラッシュが必要ですが、Raspbianではフォワードスラッシュが必要でした。
ジョンミルズ

4

エラーは、コードへのパスが間違っていたことを示しています。

VSCodeは、構成ファイル「.vscode /launch.json」の親ディレクトリを「$ {workspaceRoot}」または「$ {workspaceFolder}」として定義します。

したがって、たとえば、ファイル「myproject / subfolder / main.js」を実行する場合は、「myproject / .vscode /launch.json」を次のように構成する必要があります。 "program": "${workspaceRoot}/subfolder/main.js"

設定 "program": "${workspaceRoot}/myproject/subfolder/main.js" は間違いであり、「属性 'プログラム'が存在しません」というエラーが発生することに注意してください 。


3

私はこの問題を理解しようとして今日数時間を無駄にしました。私にとってうまくいったのは、既存のlaunch.jsonを削除し、アプリケーションを実行することでした。これにより、環境(私の場合はノード)を選択するように求められます。これにより、プログラムパスを更新した新しいlaunch.jsonが作成されました。


2

エラーは、理想的には「プログラム属性で指定されたファイルが存在しません」と読み取る必要があります。これが発生しているためです。VSCode 1.30.2以降、エラーとともにパスが表示されます。

私の場合 "program": "${workspaceFolder}\\${file}"、パスは次のようなものでした。c:\dir\c:\dir\file.js

${workspaceFolder}個々のファイルをデバッグできるようにしたかったので、削除してこれを修正しました。


1

私も同じ問題を抱えていました。私の場合、launch.jsonには次の行がありました

"program": "${workspaceFolder}\\index.js"

デバッグしようとしたアクティブなコードはapp_v2.jsにあったので、次のように更新すると、デバッグが機能しました。

"program": "${workspaceFolder}\\app_v2.js"

1

まず、公式ドキュメントを読んでください。これは、を使用してさまざまなシナリオに適切な属性を設定することについてのすべての質問に答えますlaunch.json

ここで、この質問に具体的に答えるために、${workspaceFolder}は基本的にディレクトリのディレクトリを含み.vscodeます。これはプロジェクトのルートディレクトリです。したがって、特定のファイルをデバッグプログラムとして設定するときは、プロジェクトのルートディレクトリからのパス、つまりデバッグプログラムとして設定するファイルの相対パスをマップすることを忘れないでください。これは、ファイルを右クリックしてCopy Relative Pathオプションを選択するだけで、IDE(VS Code)から簡単に取得できます。次にlaunch.json、以下のように、ファイルのプログラム属性の$ {workspaceFolder}の横にこれを貼り付けると、問題が修正されます。

"program": "${workspaceFolder}/<relative_path>"

前述のように、相対パスをコピーした相対パスに置き換え ます。私はMacプラットフォームを使用していること注意してください。プラットフォームに適したパスセパレータを使用してください

または、起動構成を特に使用しないことは、それが非本番または起動構成ファイルを保証しない単純なアプリである場合に意味があります。ただし、そうでない場合は、マルチターゲット環境(サーバー、クライアント)でデバッグするときに非常に役立ちます。私の意見では、複合起動構成のセットアップを使用すると、作業がはるかに簡単になります。サーバーファイルとクライアントファイルの相対パスを念頭に置いて設定する方法については、公式ドキュメントのこのセクションをお読みください。


0

私は同じ質問をし、それを理解するのに数時間かかりました。基本的には、後にフォルダを削除しました${workspaceFolder}

形式は${workspaceFolder}/xxxx\\folder\\subfolder\\subfolder 、「workspaceFolder」の後にあるものを削除し、二重の円記号からパスを開始することで、修正されました。


0

次のように「program」属性内に引数を渡していたため、同じエラーが発生しました。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Build -B -p",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\app\\build -B -p D:\\apps\\12"
        }
    ]
}

私にとって解決したのは、次のように「args」属性内に引数を渡すことでした。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Build -B -p",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\app\\build",
            "args":["-B", "-pD:\\apps\\12"]
        }
    ]
}

OSはWindows7でした。


0

これは単に、ファイルをデバッグするときにapp.jsファイルが存在せず、デバッグを実行するとエラーが表示されることを意味します。これが問題を解決する私の方法です:単にプログラムの値を置き換えるだけです

"${workspaceRoot}/app.js"

沿って

"${workspaceFolder}/${fileBasenameNoExtension}.js"

これですべての問題が解決することを願っています。


0

Visual Studio 2019を使用している方のために、今日は「マスター」VS2019でNode.jsを試していました。出力がフォルダーに収まるようserver.tssrcフォルダーに移動しました。jslib

その後、私はそのメッセージを受け取るのをやめました。プロジェクトファイルを機能させるために行った変更は次のとおりです。

<StartupFile>lib\server.js</StartupFile>
<WorkingDirectory>lib</WorkingDirectory>
<OutputPath>lib</OutputPath>

これが話題から外れていないことを願っています。VSIDEユーザーに役立つ可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.