基本 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.js
为program
。您使用的代码没有 app.js,这就是那个(措辞不佳)错误告诉您的内容。
【讨论】:
以上是正确答案。这是导致错误的"program": "$workspaceRoot/app.js",
行;此行引用的js文件不存在。
我不认为这是正确的。 app.js 没什么问题我没试过,但下面的 Colin 回答是我一直在做的。
这个答案对于给定的问题是正确的。问题中列出的博文使用文件server.js
作为启动文件。也许更好的答案是“program
属性指向错误的文件”以上是关于基本 node.js 项目的“属性‘程序’不存在”的主要内容,如果未能解决你的问题,请参考以下文章
nw.js node-webkit基本程序结构与配置package.json配置说明
夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据