我创建了简单的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
}
]
}
仍然在推出时我看到了:
属性'程序'不存在。
任何人都可以帮助解决问题吗?
答案 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用户。