Temel node.js projesi için "Öznitelik 'programı' mevcut değil"


83

Basit node.js uygulamasını oluşturdum (buradan kaynak kodu 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);

Ve VSCode tıklandığında launch.json oluşturuldu:

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

Yine de başlatıldığında şunu görüyorum:

Nitelik 'program' mevcut değil.

Sorun olana yardım eden var mı?

Yanıtlar:


73

Sana ihtiyacım inanıyoruz ${workspaceRoot}/server.js, değil ${workspaceRoot}/app.jsiçin program. Kullandığınız kodun bir app.js'si yok, bu (kötü yazılmış) hata size bunu söylüyor.


Yukarıdakiler doğru cevaptır. "program": "${workspaceRoot}/app.js",Hataya neden olan satırdır; bu satırın referans verdiği js dosyası mevcut değil.
Yiling

Bunun doğru olduğuna inanmıyorum. App.js'de yanlış bir şey yok Denemedim, ancak aşağıdaki Colin cevabı her zaman yaptığım şey.
Tom Stickel

Bu cevap verilen soru için doğruydu. Soruda listelenen blog gönderisi, dosyayı server.jsbaşlangıç ​​dosyası olarak kullanır . Belki daha iyi bir cevap olurdu " programnitelik yanlış dosyaya işaret"
mdickin

28

VS Code'un launch.json dosyasını içeren .vscode dizinini koyduğu yer nedeniyle de bu sorunla karşılaştım. Bir dizine koydu, bu yüzden dizini launch.json dosyasında tanımlandığı gibi yola eklemem gerekti:

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

Umarım bu yardımcı olur.


Bu konuyla tekrar farklı bir bilgisayarda karşılaştığım ve daha önce ne yaptığımı unuttuğum ve cevabınızı gördüğüm ve bunun doğru olduğunu hatırladığım için doğru cevaba sahip olduğunuza inanıyorum efendim.
Tom Stickel

Evet bu işe yaradı! Bu, düğüm projeniz kökte değil bir alt klasörde (myDir) varsa ve kökte .vscode klasörü (altında launch.json'un bulunduğu) oluşturulursa gerçekleşir.
Ajay Chebbi

14

Karşılaştığım bir başka sorun da Using\\Backslashes\\Like\\SoWindows'ta bir yol yapılandırılmış ve iyi çalışıyordu, ancak Mac'te yukarıdaki hatayı verdi.

(Çözüm: olarak değiştirildi /)


1
Evet, bu benim içindi. Windows'ta ters eğik çizgiler, ancak Raspbian'da eğik çizgiler gerekli.
John Mills

4

Hata, kodunuza giden yolun yanlış olduğunu söylüyor.

VSCode, yapılandırma dosyasının ".vscode / launch.json" üst dizinini "$ {workspaceRoot}" veya "$ {workspaceFolder}" olarak tanımlar.

Dolayısıyla, örneğin, "myproject / subfolder / main.js" dosyasını çalıştırmak istiyorsanız, "myproject / .vscode / launch.json" dosyanızı aşağıdaki gibi yapılandırmalısınız: "program": "${workspaceRoot}/subfolder/main.js"

Yapılandırmanın "program": "${workspaceRoot}/myproject/subfolder/main.js" bir hata olduğunu ve "Öznitelik 'program' mevcut değil" hatasına neden olacağını unutmayın.


3

Bugün bu sorunu çözmek için birkaç saatimi boşa harcadım. Benim için işe yarayan şey, mevcut launch.json dosyasını silmek ve uygulamayı çalıştırmaktı, bu da sizden bir ortam seçmenizi ister, ki bu benim durumumda Node idi. Bu, program yolunu güncellediğim yeni bir launch.json yarattı.


2

Hata ideal olarak 'program özniteliğinde belirtilen dosya mevcut değil' şeklinde olmalıdır, çünkü olan budur. VSCode 1.30.2'den itibaren, size hatayla birlikte yolu gösterir.

Benim durumumda "program": "${workspaceFolder}\\${file}", yol şöyle bir şeydic:\dir\c:\dir\file.js

${workspaceFolder}Dosyaları tek tek hatalarını ayıklayabilmek istediğim için kaldırarak bunu düzelttim .


1

Ben de aynı sorunu yaşadım. Benim durumumda launch.json'um aşağıdaki satıra sahipti

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

Hata ayıklamaya çalıştığım aktif kodum app_v2.js içindeydi, bu yüzden onu aşağıdaki şekilde güncelledim ve ardından hata ayıklama çalıştı.

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

1

İlk olarak, kullanarak farklı senaryolar için doğru öznitelikleri belirleme konusunda sahip olacağınız tüm soruları yanıtlayan resmi belgeyi okuyun launch.json.

Şimdi, özellikle bu soruyu yanıtlamak için ${workspaceFolder}, temelde .vscodeproje kök dizininiz olan dizinin bulunduğu dizindir. Bu nedenle, hata ayıklama programınız olarak belirli dosyaları ayarlarken, yolu proje kök dizininden veya başka bir deyişle hata ayıklama programı olarak ayarlanacak dosyanın göreceli yolunu eşlemeyi unutmayın. Bu, dosyayı sağ tıklayıp Copy Relative Pathseçeneği belirleyerek IDE'den (VS Code) kolayca elde edilebilir . Ardından bunu launch.jsondosyanızdaki program özniteliğindeki $ {workspaceFolder} yanına yapıştırarak devam edin , aşağıdaki gibi, sorunu çözecektir.

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

Göreli yolu, daha önce belirtildiği gibi kopyaladığınız göreli yolla değiştirin Bir Mac platformunda olduğumu unutmayın. Lütfen platforma uygun yol ayırıcıları kullanın

Alternatif olarak, bir başlatma yapılandırmasını kullanmamak, üretim için olmayan bir uygulama veya başlatma yapılandırma dosyasını garanti etmeyen basit bir uygulama ise mantıklıdır. Ancak, değilse, Çok hedefli bir ortamda (sunucu, istemci) hata ayıklarken çok kullanışlıdır. Kanımca, bileşik başlatma yapılandırması kurulumu kullanmak işleri çok daha kolay hale getiriyor. Sunucunuzun ve istemci dosyalarınızın göreli yollarını göz önünde bulundurarak nasıl kurulacağını öğrenmek için resmi belgelerin bu bölümünü okuyun .


0

Aynı soruyu sormuştum ve çözmem birkaç saatimi aldı. Temelde yaptığım şey, daha sonra klasörü silmekti.${workspaceFolder}

Biçim, ${workspaceFolder}/xxxx\\folder\\subfolder\\subfolder "çalışma alanıKlasörü" nden sonra gelenleri silerek ve çift geriye doğru eğik çizgiden yola çıkarak benim için onu düzeltti.


0

Aynı hatayı aldım çünkü "program" özniteliğinin içindeki değişkenleri şu şekilde geçiriyordum:

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

Benim için çözülen şey, argümanları "args" özniteliği içindeki şu şekilde geçirmekti:

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

İşletim sistemi Windows 7 idi.


0

Bu basitçe, dosyada hata ayıkladığınızda app.js dosyasının var olmadığı ve hata ayıklamayı gerçekleştirdiğinizde hatayı gösterdiği anlamına gelir. İşte sorunu çözme yolum: programın değerini değiştirmeniz yeterli

"${workspaceRoot}/app.js"

tarafından

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

Umarım bu tüm sorunlarınızı çözer.


0

Visual Studio 2019 kullananlar için , bugün "ana" VS2019'da Node.js'yi deniyordum. Ben taşındı server.tsetmek srcbenim böylece klasöründe jsçıktı olacağını libklasörde.

Ondan sonra o mesajı almaya başladım. İşte çalışması için proje dosyamda yaptığım değişiklikler.

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

Umarım bu konu dışı değildir, VS IDE kullanıcılarına yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.