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

Posted

技术标签:

【中文标题】基本 node.js 项目的“属性‘程序’不存在”【英文标题】:"Attribute 'program' does not exist" for basic node.js project 【发布时间】:2016-09-19 12:01:56 【问题描述】:

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

当启动时我仍然看到:

属性“程序”不存在。

有人可以帮忙解决问题吗?

【问题讨论】:

【参考方案1】:

对于使用 Visual Studio 2019 的人,今天我在“大师”VS2019 中尝试了 Node.js。我将server.ts 移至src 文件夹,这样我的js 输出将位于lib 文件夹中。

在那之后,我开始收到那条消息。以下是我在项目文件中所做的更改以使其正常工作。

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

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

【讨论】:

【参考方案2】:

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

"$workspaceRoot/app.js"

"$workspaceFolder/$fileBasenameNoExtension.js"

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

【讨论】:

【参考方案3】:

我遇到了同样的错误,因为我在“程序”属性中传递参数,如下所示:


    "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。

【讨论】:

【参考方案4】:

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

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

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

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

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

【讨论】:

【参考方案5】:

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

就我而言,我有 "program": "$workspaceFolder\\$file" 所以路径类似于c:\dir\c:\dir\file.js

我通过删除 $workspaceFolder 更正了这个问题,因为我希望能够调试单个文件。

【讨论】:

【参考方案6】:

我有同样的问题,我花了几个小时才弄明白。我基本上做的是删除$workspaceFolder之后的文件夹

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

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

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

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

【讨论】:

【参考方案9】:

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

(解决方法:改为/

【讨论】:

是的,这是给我的。在 Windows 上使用反斜杠,但在 Raspbian 上需要正斜杠。【参考方案10】:

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

【讨论】:

【参考方案11】:

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

“程序”:“$workspaceRoot/myDir/app.js”,

我希望这会有所帮助。

【讨论】:

我相信先生,您的答案是正确的,因为我在另一台计算机上再次遇到这个问题,忘记了我之前做了什么,看到您的答案并记住这是正确的。 是的,这行得通!如果您的节点项目位于子文件夹 (myDir) 而不是根目录中,并且 .vscode 文件夹(在其下存在 launch.json)是在根目录中创建的,则会发生这种情况。【参考方案12】:

我相信你需要$workspaceRoot/server.js,而不是$workspaceRoot/app.jsprogram。您使用的代码没有 app.js,这就是那个(措辞不佳)错误告诉您的内容。

【讨论】:

以上是正确答案。这是导致错误的"program": "$workspaceRoot/app.js", 行;此行引用的js文件不存在。 我不认为这是正确的。 app.js 没什么问题我没试过,但下面的 Colin 回答是我一直在做的。 这个答案对于给定的问题是正确的。问题中列出的博文使用文件server.js 作为启动文件。也许更好的答案是“program 属性指向错误的文件”

以上是关于基本 node.js 项目的“属性‘程序’不存在”的主要内容,如果未能解决你的问题,请参考以下文章

Node.js项目实战:从编写代码到服务器部署

nw.js node-webkit基本程序结构与配置package.json配置说明

夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据

带你开发一个完整的 node.js 项目

Node.js 用户注册功能的实现

Node.js 用户注册功能的实现