基本node.js项目的“属性'程序'不存在”

时间:2016-05-22 16:37:19

标签: node.js visual-studio-code

我创建了简单的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
        }
    ]
}

仍然在推出时我看到了:

  

属性'程序'不存在。

任何人都可以帮助解决问题吗?

12 个答案:

答案 0 :(得分:50)

我认为${workspaceRoot}/server.js需要${workspaceRoot}/app.js,而不是program。您正在使用的代码没有app.js,这就是(措辞不当)错误告诉您的。

答案 1 :(得分:22)

我也遇到过这个问题,因为VS Code放置了包含launch.json文件的.vscode目录。它把它放在一个目录中,所以我必须将目录添加到launch.json文件中定义的路径:

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

我希望这会有所帮助。

答案 2 :(得分:6)

我遇到的另一个问题是路径配置为Using\\Backslashes\\Like\\So并在Windows上正常运行,但在Mac上却出现了上述错误。

(解决方案:更改为/

答案 3 :(得分:3)

今天我浪费了几个小时试图解决这个问题。对我有用的是删除现有的launch.json并运行应用程序,它会提示您选择一个环境,在我的例子中是Node。这创建了一个新的launch.json,我在其中更新了程序路径。

答案 4 :(得分:3)

错误是说代码的路径错误。

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" 是一个错误,将导致错误“属性'程序'不存在”。

答案 5 :(得分:1)

理想情况下,该错误应读取“程序属性中指定的文件不存在”,因为这是正在发生的情况。从VSCode 1.30.2开始,它确实向您显示了路径以及错误。

就我而言, "program": "${workspaceFolder}\\${file}",因此路径类似于c:\dir\c:\dir\file.js

我通过删除${workspaceFolder}来纠正此问题,因为我希望能够调试单个文件。

答案 6 :(得分:0)

我有同样的问题。在我的情况下,我的launch.json有以下行

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

我尝试调试的活动代码是在app_v2.js中,所以我将其更新为以下版本,然后调试工作。

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

答案 7 :(得分:0)

我有同样的问题,花了几个小时才弄清楚。我基本上所做的是在${workspaceFolder}

之后删除了该文件夹

格式为${workspaceFolder}/xxxx\\folder\\subfolder\\subfolder 因此,通过删除“ workspaceFolder”之后的内容并从双反斜杠开始我的路径,它确实为我解决了该问题。

答案 8 :(得分:0)

首先,请阅读官方的document,这将回答您有关使用launch.json为不同场景设置正确属性的所有问题。

现在,为了具体回答这个问题,${workspaceFolder}基本上包含.vscode目录的目录,这是您的项目根目录。因此,在将特定文件设置为调试程序时,请记住映射项目根目录中的路径,换句话说,就是要设置为调试程序的文件的相对路径。只需右键单击文件并选择Copy Relative Path选项,即可从IDE(VS代码)轻松获得此文件。然后继续将其粘贴到launch.json文件中program属性中的$ {workspaceFolder}旁边,如下所示,将解决此问题。

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

用前面提到的复制的相对路径替换相对路径 请注意,我在Mac平台上。请使用平台适当的路径分隔符

或者,如果它不是用于生产或不保证启动配置文件的简单应用,则不专门使用启动配置是有意义的。但是,如果不是这样,则在多目标环境(服务器,客户端)中进行调试时,它将非常有用。我认为,使用复合启动配置设置会使事情变得容易得多。阅读此section官方文档,以了解如何设置它,同时牢记服务器和客户端文件的相对路径。

答案 9 :(得分: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"]
        }
    ]
}

O.S。是Windows 7。

答案 10 :(得分:0)

这只是意味着在调试文件时, app.js 文件根本不存在,并且在执行调试时会显示错误。 这是我解决问题的方法: 只需替换程序的值

"${workspaceRoot}/app.js"

通过

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

我希望这能解决您的所有问题。

答案 11 :(得分:0)

对于那些正在使用 Visual Studio 2019 的用户,今天我正在“主” VS2019中尝试Node.js。我将use flate2::read::GzDecoder; use hyper::Client; use std::io::BufReader; #[tokio::main] async fn main() -> Result<(), anyhow::Error> { let client = Client::new(); let uri = "http://datasets.imdbws.com/title.basics.tsv.gz".parse()?; let body = client.get(uri).await?.into_body(); let d = GzDecoder::new(body); // hyper::Body doesn't implement Read for line in BufReader::new(d).lines() { // do something with lines } Ok(()) } 移到了server.ts文件夹中,这样我的src的输出将在js文件夹中。

之后,我以收到该消息为由。这是我在项目文件中所做的更改,以使其正常运行。

lib

我希望这不会成为话题,它可以帮助VS IDE用户。