web-dev-qa-db-ja.com

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

簡単な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
        }
    ]
}

そしてまだ起動すると、私は見る:

属性 'program'は存在しません。

誰が間違っているのを助けることができますか?

62
Valeriy

programには${workspaceRoot}/server.jsではなく${workspaceRoot}/app.jsが必要だと思います。あなたが使用しているコードにはapp.jsがありません。それは、その(つまらない)エラーがあなたに伝えていることです。

55
mdickin

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

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

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

23
Colin

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

(解決策:/に変更)

10
ripper234

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

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"の設定は誤りであり、「属性 'program'が存在しません」というエラーが発生することに注意してください。

3
user3179473

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

3
Awad Maharoof

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

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

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

1
Alex Wachira

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

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

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

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

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

0
Avid Programmer

同じ問題がありました。私の場合、launch.jsonには次の行がありました

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

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

"program": "${workspaceFolder}\\app_v2.js"
0
Orhan Celik

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

形式は${workspaceFolder}/xxxx\\folder\\subfolder\\subfolderだったので、「workspaceFolder」の後にあるものを削除し、2つの逆スラッシュからパスを開始することで修正しました。

0
Mjyousse