我有一个 Nodejs Express 服务,我们开始使用 Deno 2。它可以从 bash 脚本启动,但我开始尝试在 Vscode 调试(launch.json)中运行。
我按照 deno 页面中所述进行了初始配置https://docs.deno.com/runtime/reference/vscode/并且添加了一些跳过文件来忽略node_internals、node_modules。
但是当我运行调试模式时,开始暂停,并出现来自节点模块内部或 00_infra.js 等文件的许多异常。
其中一些是: 00_infra.js -> 没有这样的文件或目录(操作系统错误 2):Istat '/.dockerenv' util.mjs -> 错误:ENOENT:没有这样的文件或目录,访问“/.dockerenv” 00_infra.js -> 未找到:原始错误:没有查询记录 { name: Name("uri-mongodb"), query_type: AAAA, query_class: IN) 在 async Object.resolveDns (ext: denot_net/01_net.js: 77:12)
如果我快速按 F5(继续)看到这些错误,服务至少会运行并显示连接到 mongodb。
我不确定为什么 bash 脚本运行正常时会发生这种情况。该脚本简单地加载一个 .env 文件并运行 deno task dev,这会从 deno.json 运行一个任务 deno run --watch --allow-* src/server.ts
如果有人有线索,我将非常感激!
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Deno",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/server.ts",
"cwd": "${workspaceFolder}",
"env": {
"MY_ENV_VAR": "value"
},
"runtimeExecutable": "/path/to/deno",
"runtimeArgs": [
"run",
"--inspect-wait",
"--allow-all"
],
"attachSimplePort": 9229,
"skipFiles": [
"<node_internals>/**/*.js",
"${workspaceFolder}/node_modules/**/*.js",
"${workspaceFolder}/node_modules/.deno/**/*.js"
],
"outputCapture": "std"
}
]
}
对我有用的解决方案(可能有些跳过是重复的):
{
"version": "0.2.0",
"configurations": [
{
"name": "Deno",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/server.ts",
"cwd": "${workspaceFolder}",
"envFile": "${workspaceFolder}/.env",
"runtimeExecutable": "deno",
"runtimeArgs": [
"run",
"--inspect-wait",
"--allow-all"
],
"attachSimplePort": 9229,
"skipFiles": [
"<node_internals>/**",
"${workspaceFolder}/node_modules/**",
"${workspaceFolder}/node_modules/.deno/**",
"${workspaceFolder}/node_modules/.deno/**/node_modules/**",
"${workspaceFolder}/**/*.js",
"${workspaceFolder}/**/*.jsx",
"**/connection_wrap.ts",
"**/*.mjs"
],
"outputCapture": "std"
}
]
}
如果有人有更好的解决方案请分享! 我希望这对其他人有帮助,不要花几个小时去战斗!