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


82

我创建了简单的node.js应用程序(来自此处的源代码https://azure.microsoft.com/zh-cn/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
        }
    ]
}

仍然在启动时看到:

属性“程序”不存在。

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

Answers:


73

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


以上是正确答案。是"program": "${workspaceRoot}/app.js",导致错误的行;该行引用的js文件不存在。
伊陵

我不认为这是正确的。app.js没什么问题,我没有尝试过,但是下面Colin的答案是我一直在做的事情。
汤姆·斯蒂克

这个答案对给定的问题是正确的。问题中列出的博客文章使用该文件server.js作为启动文件。也许更好的答案是“program属性指向错误的文件”
mdickin

28

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

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

我希望这有帮助。


相信先生,您有正确的答案,因为我在另一台计算机上再次遇到此问题时,忘记了我之前所做的事情,看到您的答案并记住这是正确的。
汤姆·斯蒂克

是的,这行得通!如果将节点项目放在子文件夹(myDir)中而不在根目录下,而在根目录下创建.vscode文件夹(在其中存在launch.json),则会发生这种情况。
Ajay Chebbi

14

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

(解决方案:更改为/


1
是的,这是给我的。在Windows上为反斜杠,但在Raspbian上需要为正斜杠。
约翰·米尔斯

4

该错误表明您的代码路径错误。

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


3

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


2

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

就我而言 "program": "${workspaceFolder}\\${file}",这条路就像c:\dir\c:\dir\file.js

我删除了此错误,${workspaceFolder}因为我希望能够调试单个文件。


1

我遇到过同样的问题。就我而言,launch.json有以下行

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

我尝试调试的活动代码位于app_v2.js中,因此我将其更新为以下代码,然后调试工作了。

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

1

首先,请阅读官方文档,文档回答了您有关使用以下方法为不同场景设置正确属性的所有问题launch.json

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

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

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

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


0

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

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


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

操作系统是Windows 7。


0

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

"${workspaceRoot}/app.js"

通过

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

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


0

对于正在使用Visual Studio 2019的用户,今天我正在“主” VS2019中尝试Node.js。我移到server.tssrc文件夹,以便我的js输出位于lib文件夹中。

在那之后,我想得到那条消息。这是我在项目文件中所做的更改,以使其正常运行。

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

我希望这不是主题,它可以帮助VS IDE用户。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.