使用node.js使用chrome调试VSCode中的Typescript

使用node.js使用chrome调试VSCode中的Typescript,node.js,google-chrome,typescript,visual-studio-code,Node.js,Google Chrome,Typescript,Visual Studio Code,我正在尝试使用vs代码的调试扩展在chrome中调试我的Typescript代码。作为web服务器,我使用nodejs(也作为VS代码插件)。当我使用firefox时,我的断点会被击中,因此,当我使用chrome时,我会收到以下错误消息: ******** Unhandled error in debug adapter: TypeError: Path must be a string. Received null at assertPath (path.js:7:11) at Object.

我正在尝试使用vs代码的调试扩展在chrome中调试我的Typescript代码。作为web服务器,我使用nodejs(也作为VS代码插件)。当我使用firefox时,我的断点会被击中,因此,当我使用chrome时,我会收到以下错误消息:

******** Unhandled error in debug adapter: TypeError: Path must be a string. Received null
at assertPath (path.js:7:11)
at Object.dirname (path.js:697:5)
at Object.resolveMapPath (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\sourceMaps\sourceMapUtils.js:106:96)
at getSourceMapContent (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\sourceMaps\sourceMapFactory.js:71:30)
at Object.getMapForGeneratedPath (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\sourceMaps\sourceMapFactory.js:29:30)
at SourceMaps.processNewSourceMap (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\sourceMaps\sourceMaps.js:63:32)
at BaseSourceMapTransformer.scriptParsed (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\transformers\baseSourceMapTransformer.js:189:37)
at ChromeDebugAdapter.onScriptParsed (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\chrome\chromeDebugAdapter.js:314:56)
at Client.chrome.Debugger.onScriptParsed.params (C:\Users\pazureck\.vscode\extensions\msjsdiag.debugger-for-chrome-2.2.2\node_modules\vscode-chrome-debug-core\out\src\chrom[...]
这是我的launch.json:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch Firefox index.html (sourcemaps)",
        "type": "firefox",
        "url": "http://localhost:8080/index.html",
        "webRoot": "${workspaceRoot}",
        "request": "launch"
    },
    {
        "name": "Launch Chrome with sourcemaps",
        "type": "chrome",
        "request": "launch",
        "url": "http://localhost:8080/index.html",
        "sourceMaps": true,
        "webRoot": "${workspaceRoot}"
    },
    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "sourceMaps": true,
        "program": "${workspaceRoot}/server.js",
        "cwd": "${workspaceRoot}",
        "outFiles": ["${workspaceRoot}/**/*.js"]
    },
    // Composite Launches *********************************************************************************************************
    {
        "name": "Launch Node.js with FF",
        "type": "composite",
        "configurationNames": [
            "Launch Program", "Launch Firefox index.html (sourcemaps)"
        ],
        "request": "launch"
    },
    {
        "name": "Launch Node.js with Chrome",
        "type": "composite",
        "configurationNames": [
            "Launch Program", "Launch Chrome with sourcemaps"
        ],
        "request": "launch"
    }
]
}
这是我的server.js

var express = require('express'),
app = express(),
compression = require('compression'),
open = require('open'),
serveIndex = require('serve-index'),
port = process.env.PORT || 8080,
publicPath = '',
directory = __dirname + publicPath,
launchUrl = 'http://localhost:' + port + publicPath,
year = 60 * 60 * 24 * 365 * 1000;

// use compress middleware to gzip content
app.use(compression());

// set default mime type to xml for ".library" files
express.static.mime.default_type = "text/xml";

// serve up content directory showing hidden (leading dot) files
app.use(publicPath, express.static(directory, { maxAge: year, hidden: true }));

// enable directory listing
app.use("/", serveIndex(__dirname, {'icons': true}));
app.use(express.static(directory, { 'dotfiles': 'allow' }));

// start server
app.listen(port);

// launch uri in default browser
// open(launchUrl);

// log to server console
console.log("OpenUI5 SDK server running at\n  => " + launchUrl + " \nCTRL + C to shutdown");
似乎我发布映射文件时出错了,因为Chrome似乎找不到它们?通过google,我也没有得到任何关于我的节点调试配置的
outFiles
的有用信息

有人有没有提示,如何解决这个问题,或者为什么chrome调试适配器接收到的路径为空?它正在启动并打开给定的地址

谢谢你的意见

编辑:

在我的案例中出现错误之前,js控制台上也会出现这种情况:

Tue, 15 Nov 2016 20:34:41 GMT send deprecated hidden: use dotfiles: 'allow' instead at node_modules\serve-static\index.js:96:18

这是一个答案。如果您使用上述配置,则可以将node.js与Chrome一起使用。感谢开发人员的快速修复。

这是一个答案。如果您使用上述配置,则可以将node.js与Chrome一起使用。多亏了开发人员的快速修复。

我今天才开始使用它,但也遇到了同样的错误。google搜索visual studio代码“调试适配器中未处理的错误:”显示这是唯一的结果,我想知道是否有扩展的更新破坏了某些东西?很高兴我不是唯一一个这样做的人。也许这是错误来源的提示?(从插件帮助部分):“仔细查看您的sourcemap配置。sourcemap有一个指向源文件的路径,此扩展使用该路径查找磁盘上的原始源文件。检查sourcemap中的sourceRoot和sources属性,并确保它们可以与启动配置中的webRoot属性相结合,以构建到原始源文件的正确路径。“如果我理解正确,您可以使用调试相同的代码,但不能使用?这可能是源映射问题或chrome调试器扩展的问题。你搜索过vscode chrome调试器github的问题吗?你搜索过了,并在那里发布了我的问题:小更新:这似乎是某种bug。开发人员正在使用它。我今天刚开始使用它,并且得到了相同的错误。google搜索visual studio代码“调试适配器中未处理的错误:”显示这是唯一的结果,我想知道是否有扩展的更新破坏了某些东西?很高兴我不是唯一一个这样做的人。也许这是错误来源的提示?(从插件帮助部分):“仔细查看您的sourcemap配置。sourcemap有一个指向源文件的路径,此扩展使用该路径查找磁盘上的原始源文件。检查sourcemap中的sourceRoot和sources属性,并确保它们可以与启动配置中的webRoot属性相结合,以构建到原始源文件的正确路径。“如果我理解正确,您可以使用调试相同的代码,但不能使用?这可能是源映射问题或chrome调试器扩展的问题。你搜索过vscode chrome调试器github的问题吗?你搜索过了,并在那里发布了我的问题:小更新:这似乎是某种bug。开发人员正在努力。