"Attribut 'Programm' existiert nicht" für das Basisprojekt node.js

82

Ich habe eine einfache Anwendung node.js erstellt (Quellcode von hier 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);

Und geklickt VSCode generiert 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
        }
    ]
}

Und noch beim Start sehe ich:

Das Attribut 'Programm' existiert nicht.

Kann jemand helfen, was los ist?

Valeriy
quelle

Antworten:

73

Ich glaube, dass Sie brauchen ${workspaceRoot}/server.js, nicht ${workspaceRoot}/app.jsfür program. Der Code, den Sie verwenden, hat keine app.js, das sagt Ihnen dieser (schlecht formulierte) Fehler.

mdickin
quelle
Das Obige ist die richtige Antwort. Es ist die "program": "${workspaceRoot}/app.js",Linie, die den Fehler verursacht; Die von dieser Zeile referenzierte js-Datei existiert nicht.
Yiling
Ich glaube nicht, dass dies richtig ist. Mit app.js ist nichts falsch. Ich habe es nicht ausprobiert, aber die Antwort von Colin unten ist das, was ich immer mache.
Tom Stickel
Diese Antwort war für die gegebene Frage richtig. Der in der Frage aufgeführte Blog-Beitrag verwendet die Datei server.jsals Startdatei. Vielleicht wäre eine bessere Antwort gewesen "das programAttribut zeigt auf die falsche Datei"
mdickin
28

Ich bin auch auf dieses Problem gestoßen, weil VS Code das .vscode-Verzeichnis mit der Datei launch.json abgelegt hat. Es wurde ein Verzeichnis erstellt, sodass ich das Verzeichnis dem Pfad hinzufügen musste, wie in der Datei launch.json definiert:

"program": "$ {workspaceRoot} /myDir/app.js",

Ich hoffe das hilft.

Colin
quelle
Ich glaube, Sir, dass Sie die richtige Antwort haben, da ich auf einem anderen Computer erneut auf dieses Problem gestoßen bin und vergessen habe, was ich zuvor getan habe, Ihre Antwort gesehen und mich daran erinnert habe, dass dies richtig ist.
Tom Stickel
Ja das hat funktioniert! Dies geschieht, wenn Sie Ihr Knotenprojekt in einem Unterordner (myDir) und nicht im Stammverzeichnis haben und der Ordner .vscode (unter dem die Datei launch.json vorhanden ist) im Stammverzeichnis erstellt wird.
Ajay Chebbi
14

Ein weiteres Problem, auf das ich gestoßen bin, ist, dass ein Pfad unter Using\\Backslashes\\Like\\SoWindows konfiguriert wurde und einwandfrei funktioniert hat, aber auf dem Mac wurde der obige Fehler ausgegeben.

(Lösung: geändert zu /)

ripper234
quelle
1
Ja, das war es für mich. Schrägstriche unter Windows, aber Schrägstriche unter Raspbian erforderlich.
John Mills
4

Der Fehler besagt, dass der Pfad zu Ihrem Code falsch war.

VSCode definiert das übergeordnete Verzeichnis seiner Konfigurationsdatei ".vscode / launch.json" als "$ {workspaceRoot}" oder "$ {workspaceFolder}".

Wenn Sie beispielsweise die Datei "myproject / subfolder / main.js" ausführen möchten, sollten Sie "myproject / .vscode / launch.json" wie folgt konfigurieren: "program": "${workspaceRoot}/subfolder/main.js"

Beachten Sie, dass die Konfiguration "program": "${workspaceRoot}/myproject/subfolder/main.js" ein Fehler ist und den Fehler "Attribut 'Programm' existiert nicht" verursacht.

user3179473
quelle
3

Ich habe heute ein paar Stunden damit verbracht, dieses Problem herauszufinden. Was für mich funktioniert hat, war das Löschen der vorhandenen Datei launch.json und das Ausführen der Anwendung, wodurch Sie aufgefordert werden, eine Umgebung auszuwählen, in meinem Fall Node. Dadurch wurde eine neue launch.json erstellt, in der ich den Programmpfad aktualisiert habe.

Awad Maharoof
quelle
2

Der Fehler sollte idealerweise lauten: "Die im Programmattribut angegebene Datei existiert nicht", da dies der Fall ist. Ab VSCode 1.30.2 wird der Pfad zusammen mit dem Fehler angezeigt.

In meinem Fall hatte ich "program": "${workspaceFolder}\\${file}"so einen Weg wiec:\dir\c:\dir\file.js

Ich habe dies durch Entfernen korrigiert, ${workspaceFolder}da ich einzelne Dateien debuggen wollte.

Alex Wachira
quelle
1

Ich hatte das gleiche Problem. In meinem Fall hatte meine launch.json folgende Zeile

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

Mein aktiver Code, den ich zu debuggen versuchte, befand sich in app_v2.js. Daher habe ich ihn auf den folgenden Code aktualisiert und dann hat das Debuggen funktioniert.

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

Lesen Sie zunächst das offizielle Dokument, in dem alle Fragen beantwortet werden, die Sie zum Festlegen der richtigen Attribute für verschiedene Szenarien haben launch.json.

Um diese Frage speziell zu beantworten, ${workspaceFolder}enthält das .vscodeVerzeichnis im Wesentlichen das Verzeichnis, das Ihr Projektstammverzeichnis ist. Denken Sie also beim Festlegen bestimmter Dateien als Debugging-Programm daran, den Pfad aus dem Projektstammverzeichnis oder mit anderen Worten den relativen Pfad der Datei zuzuordnen, die als Debugging-Programm festgelegt werden soll. Dies kann einfach über die IDE (VS-Code) abgerufen werden, indem Sie einfach mit der rechten Maustaste auf die Datei klicken und die Copy Relative PathOption auswählen . Fügen Sie dies dann neben $ {workspaceFolder} in das Programmattribut Ihrer launch.jsonDatei ein (siehe unten), um das Problem zu beheben.

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

Ersetzen Sie den relativen Pfad durch Ihren kopierten relativen Pfad, wie zuvor erwähnt. Beachten Sie, dass ich mich auf einer Mac-Plattform befinde. Bitte verwenden Sie plattformgerechte Pfadtrennzeichen

Alternativ ist es nicht sinnvoll, eine Startkonfiguration nicht speziell zu verwenden, wenn es sich um eine nicht für die Produktion bestimmte App oder eine einfache App handelt, für die keine Startkonfigurationsdatei erforderlich ist. Wenn nicht, ist es jedoch sehr nützlich, wenn Sie in einer Umgebung mit mehreren Zielen (Server, Client) debuggen. Meiner Meinung nach erleichtert die Verwendung eines zusammengesetzten Startkonfigurations-Setups die Arbeit erheblich. Lesen Sie diesen Abschnitt der offiziellen Dokumente, um zu erfahren, wie Sie ihn unter Berücksichtigung der relativen Pfade Ihrer Server- und Client-Dateien einrichten.

Avid Programmer
quelle
0

Ich hatte die gleiche Frage und brauchte ein paar Stunden, um sie herauszufinden. Im Grunde habe ich den Ordner danach gelöscht${workspaceFolder}

Das Format war ${workspaceFolder}/xxxx\\folder\\subfolder\\subfolder so, dass es für mich behoben wurde , indem das, was nach dem "workspaceFolder" steht, gelöscht und mein Pfad vom doppelten Schrägstrich nach hinten gestartet wurde.

Mjyousse
quelle
0

Ich hatte den gleichen Fehler, weil ich die Argumente im Attribut "program" wie folgt übergeben habe:

{
    "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"
        }
    ]
}

Was für mich gelöst wurde, war, die Argumente innerhalb des Attributs "args" wie folgt zu übergeben:

{
    "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"]
        }
    ]
}

Das Betriebssystem war Windows 7.

Carlos Nantes
quelle
0

Dies bedeutet einfach, dass beim Debuggen der Datei die Datei app.js einfach nicht vorhanden ist und beim Debuggen der Fehler angezeigt wird. Hier ist meine Art, das Problem zu beheben: Ersetzen Sie einfach den Wert des Programms

"${workspaceRoot}/app.js"

durch

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

Ich hoffe, dies wird alle Ihre Probleme lösen.

Raman Sharma
quelle
0

Für diejenigen, die Visual Studio 2019 verwenden , habe ich heute Node.js im "Master" VS2019 ausprobiert. Ich bin in server.tsden srcOrdner verschoben , damit sich meine jsAusgabe im libOrdner befindet.

Danach fing ich an, diese Nachricht zu bekommen. Hier sind die Änderungen, die ich in meiner Projektdatei vorgenommen habe, damit sie funktioniert.

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

Ich hoffe, dass dies nicht unangebracht ist, es könnte VS IDE-Benutzern helfen.

Fabrice T.
quelle