"Chương trình" thuộc tính "không tồn tại" cho dự án node.js cơ bản


82

Tôi đã tạo ứng dụng node.js đơn giản (mã nguồn từ đây 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);

Và nhấp vào VSCode tạo khởi chạy.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
        }
    ]
}

Và khi khởi chạy tôi vẫn thấy:

Thuộc tính 'chương trình' không tồn tại.

Ai có thể giúp đỡ những gì sai?

Câu trả lời:


73

Tôi tin rằng bạn cần ${workspaceRoot}/server.js, không phải ${workspaceRoot}/app.jscho program. Mã bạn đang sử dụng không có app.js, đó là lỗi (được diễn đạt kém) đó cho bạn biết.


Trên đây là câu trả lời chính xác. Nó là "program": "${workspaceRoot}/app.js",dòng gây ra lỗi; tệp js được tham chiếu bởi dòng này không tồn tại.
Yiling

Tôi không tin rằng điều này là chính xác. Không có gì sai với app.js Tôi đã không thử nó, nhưng Colin trả lời dưới đây là những gì tôi luôn làm.
Tom Stickel

Câu trả lời này đúng cho câu hỏi đã cho. Bài đăng trên blog được liệt kê trong câu hỏi sử dụng tệp này server.jslàm tệp khởi động. Có lẽ một câu trả lời tốt hơn sẽ là "các programthuộc tính được trỏ đến tập tin sai"
mdickin

28

Tôi cũng gặp phải vấn đề này vì nơi VS Code đặt thư mục .vscode chứa tệp khởi chạy.json. Nó đưa nó lên một thư mục vì vậy tôi phải thêm thư mục vào đường dẫn như được xác định trong tệp khởi chạy.json:

"chương trình": "$ {workspaceRoot} /myDir/app.js",

Tôi hi vọng cái này giúp được.


Tôi tin rằng bạn có câu trả lời chính xác vì tôi đã gặp lại vấn đề này trên một máy tính khác và quên mất những gì tôi đã làm trước đó và xem câu trả lời của bạn và nhớ điều này là chính xác.
Tom Stickel

Vâng, điều này đã hoạt động! Điều này xảy ra nếu bạn có dự án nút của mình trong thư mục con (myDir) chứ không phải ở thư mục gốc và thư mục .vscode (dưới đó có launcher.json) được tạo ở thư mục gốc.
Ajay Chebbi

14

Một vấn đề khác mà tôi gặp phải là một đường dẫn đã được định cấu hình Using\\Backslashes\\Like\\Sovà hoạt động tốt trên Windows, nhưng trên Mac thì nó lại cho lỗi ở trên.

(Giải pháp: đã đổi thành /)


1
Vâng, đây là nó cho tôi. Dấu gạch chéo ngược trên Windows, nhưng cần dấu gạch chéo về phía trước trên Raspbian.
John Mills

4

Lỗi nói rằng đường dẫn đến mã của bạn bị sai.

VSCode xác định thư mục mẹ của tệp cấu hình ".vscode / khởi chạy.json" là "$ {workspaceRoot}" hoặc "$ {workspaceFolder}".

Vì vậy, ví dụ: nếu bạn muốn chạy tệp "myproject / subfolder / main.js", bạn nên định cấu hình "myproject / .vscode / khởi chạy.json" của mình như sau: "program": "${workspaceRoot}/subfolder/main.js"

Lưu ý rằng cấu hình "program": "${workspaceRoot}/myproject/subfolder/main.js" là một sai lầm và sẽ gây ra lỗi "Chương trình 'thuộc tính' không tồn tại".


3

Tôi đã lãng phí một vài giờ ngày hôm nay để cố gắng tìm ra vấn đề này. Điều làm việc hiệu quả với tôi là xóa khởi chạy hiện tại và chạy ứng dụng, điều này sẽ nhắc bạn chọn một môi trường, trong trường hợp của tôi là Node. Điều này tạo ra một launcher.json mới trong đó tôi đã cập nhật đường dẫn chương trình.


2

Lý tưởng là lỗi nên đọc 'tệp được chỉ định trong thuộc tính chương trình không tồn tại' vì đó là những gì đang xảy ra. Đối với VSCode 1.30.2, nó hiển thị cho bạn đường dẫn cùng với lỗi.

Trong trường hợp của tôi, tôi có "program": "${workspaceFolder}\\${file}"nên con đường giống nhưc:\dir\c:\dir\file.js

Tôi đã sửa lỗi này bằng cách xóa ${workspaceFolder}vì tôi muốn có thể gỡ lỗi các tệp riêng lẻ.


1

Tôi gặp vấn đề tương tự. Trong trường hợp của tôi, launcher.json của tôi có dòng sau

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

Mã hoạt động của tôi mà tôi đã cố gắng gỡ lỗi nằm trong app_v2.js, vì vậy tôi đã cập nhật nó thành sau và sau đó gỡ lỗi đã hoạt động.

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

1

Trước tiên, hãy đọc tài liệu chính thức này trả lời tất cả câu hỏi bạn sẽ có về việc thiết lập các thuộc tính phù hợp cho các tình huống khác nhau bằng cách sử dụng launch.json.

Bây giờ, để trả lời cụ thể câu hỏi này, ${workspaceFolder}về cơ bản, thư mục chứa thư mục .vscode, đó là thư mục gốc dự án của bạn. Vì vậy, khi đặt các tệp cụ thể làm chương trình gỡ lỗi của bạn, hãy nhớ ánh xạ đường dẫn từ thư mục gốc của dự án, hay nói cách khác là đường dẫn tương đối của tệp sẽ được đặt làm chương trình gỡ lỗi. Điều này có thể dễ dàng lấy được từ IDE (VS Code) bằng cách nhấp chuột phải vào tệp và chọn Copy Relative Pathtùy chọn. Sau đó, tiến hành dán phần này bên cạnh $ {workspaceFolder} trong thuộc tính chương trình trong launch.jsontệp của bạn , như bên dưới, sẽ khắc phục được sự cố.

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

Thay thế đường dẫn tương đối bằng đường dẫn tương đối đã sao chép của bạn như đã đề cập trước đây Lưu ý rằng tôi đang sử dụng nền tảng Mac. Vui lòng sử dụng dấu phân cách đường dẫn phù hợp với nền tảng

Ngoài ra, việc không sử dụng cụ thể cấu hình khởi chạy sẽ có ý nghĩa nếu đó là ứng dụng không dành cho sản xuất hoặc ứng dụng đơn giản không đảm bảo tệp cấu hình khởi chạy. Tuy nhiên, nếu không, nó sẽ siêu hữu ích khi gỡ lỗi trong môi trường Đa mục tiêu (máy chủ, máy khách). Theo ý kiến ​​của tôi, việc sử dụng thiết lập cấu hình khởi chạy phức hợp giúp mọi thứ dễ dàng hơn rất nhiều. Đọc phần này của tài liệu chính thức để tìm hiểu cách thiết lập nó, ghi nhớ các đường dẫn tương đối của tệp máy chủ và máy khách của bạn.


0

Tôi đã có cùng một câu hỏi và tôi đã mất vài giờ để tìm ra nó. Về cơ bản, những gì tôi đã làm là xóa thư mục sau khi${workspaceFolder}

Định dạng là ${workspaceFolder}/xxxx\\folder\\subfolder\\subfolder như vậy bằng cách xóa những gì sau "workspaceFolder" và bắt đầu đường dẫn của tôi từ dấu gạch chéo ngược kép, nó đã sửa nó cho tôi.


0

Tôi đã gặp lỗi tương tự, vì tôi đang chuyển các đối số bên trong thuộc tính "chương trình" như sau:

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

Điều giải quyết được cho tôi là chuyển các đối số bên trong thuộc tính "args", như thế này:

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

Hệ điều hành là Windows 7.


0

Nó đơn giản có nghĩa là khi bạn gỡ lỗi tệp, tệp app.js chỉ đơn giản là không tồn tại và khi bạn thực hiện gỡ lỗi, nó sẽ hiển thị lỗi. Đây là cách của tôi để khắc phục sự cố: chỉ cần thay thế giá trị của chương trình

"${workspaceRoot}/app.js"

bởi

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

Tôi hy vọng điều này sẽ giải quyết tất cả các vấn đề của bạn.


0

Đối với những người đang sử dụng Visual Studio 2019 , hôm nay tôi đã thử Node.js trong VS2019 "chính". Tôi đã chuyển server.tsđến srcthư mục đểjs đầu ra sẽ nằm trong libthư mục.

Sau đó tôi đã nhận được tin nhắn đó. Đây là những thay đổi tôi đã thực hiện trong tệp dự án của mình để nó hoạt động.

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

Tôi hy vọng điều này không nằm ngoài chủ đề, nó có thể giúp ích cho người dùng VS IDE.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.