node.js - 使用Visual Studio 2017开发和调试Electron Node js-调试器附加但应用程序窗口不正确

标签 node.js visual-studio-2017 electron visual-studio-debugging

Visual Studio社区2017版本15.9.5
Node JS版本:10.11.0
Chrome版本:69.0.3497.106
Electron 版本:4.0.1

使用对vs项目属性的修改,如下所述:

https://stackoverflow.com/a/46658784/2388129

以及这里

https://stackoverflow.com/a/35985306/2388129

我能够附加到VS调试器并命中断点。

但是,Electron应用程序窗口无法正确初始化。我只能通过执行.npm start使该应用程序通过node.js交互式窗口正常运行。

当在debug配置下运行并在VS中按F5或Start时,我得到一个控制台窗口,然后我去连接调试器。达到断点,但是Electron应用程序窗口如下所示:

Electron window when VS debugger attached showing some default content, not the project's content

该项目的njsproj文件内容为:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    <Name>GitMon</Name>
    <RootNamespace>GitMon</RootNamespace>
    <SaveNodeJsSettingsInProjectFile>True</SaveNodeJsSettingsInProjectFile>
    <NodeExePath>D:\@Documents\My Open Source Repos\GitMon\node_modules\electron\dist\electron.exe</NodeExePath>
    <NodeExeArguments>main.js</NodeExeArguments>
    <JavaScriptTestFramework>ExportRunner</JavaScriptTestFramework>
    <ScriptArguments>--inspect-brk</ScriptArguments>
    <DebuggerPort>5858</DebuggerPort>
    <NodejsPort>
    </NodejsPort>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>0e3d7742-5973-41e0-8411-97f609c13491</ProjectGuid>
    <ProjectHome>.</ProjectHome>
    <StartupFile>main.js</StartupFile>
    <StartWebBrowser>False</StartWebBrowser>
    <SearchPath>
    </SearchPath>
    <WorkingDirectory>.</WorkingDirectory>
    <OutputPath>.</OutputPath>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <ProjectTypeGuids>{3AF33F2E-1136-4D97-BBB7-1795711AC8B8};{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}</ProjectTypeGuids>
    <StartWebBrowser>True</StartWebBrowser>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>true</DebugSymbols>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="main.js" />
    <Compile Include="renderer\badgeHandler.js" />
    <Compile Include="renderer\directoryPickerCaller.js" />
    <Compile Include="renderer\externalLinkHandler.js" />
    <Compile Include="renderer\gitStatusResultDOMHandler.js" />
    <Compile Include="renderer\mainDivSizeHandler.js" />
    <Compile Include="renderer\preloader.js" />
    <Compile Include="renderer\sidenav.js" />
    <Compile Include="renderer\titlebar.js" />
    <Compile Include="renderer\zoomHandler.js" />
    <Compile Include="renderer\_requires.js" />
    <Compile Include="store.js">
      <SubType>Code</SubType>
    </Compile>
    <Content Include="css\colors.css" />
    <Content Include="css\content.css" />
    <Content Include="css\preloader.css" />
    <Content Include="css\scrollbar.css" />
    <Content Include="css\sidenav.css" />
    <Content Include="css\titlebar.css" />
    <Content Include="index.html">
      <SubType>Code</SubType>
    </Content>
    <Content Include="package.json" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="css\" />
    <Folder Include="renderer\" />
  </ItemGroup>
  <!-- Do not delete the following Import Project.  While this appears to do nothing it is a marker for setting TypeScript properties before our import that depends on them. -->
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="False" />
  <Import Project="$(VSToolsPath)\Node.js Tools\Microsoft.NodejsTools.targets" />
</Project>

感谢您的协助!

最佳答案

试试这个

在你的main.js

替换此行:

mainWindow.loadFile(`index.html`);

有了这个
mainWindow.loadURL(`file://${__dirname}/index.html`);

引用:https://www.ryadel.com/en/visual-studio-2017-setup-electron-project-run-hello-world-sample-vs2017-template-quick-start/

关于node.js - 使用Visual Studio 2017开发和调试Electron Node js-调试器附加但应用程序窗口不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380261/

相关文章:

node.js - 图像未保存到上传文件夹 Node multer

arrays - 从 mongoDB 集合中删除数组项

javascript - Node.js/JavaScript - 避免用户输入脚本和 html 实体

.net - VS2017 15.8.2发布错误(.NET Core 2.1)

c++ - 错误 : LNK1104 cannot open file 'pthread.lib'

node.js - npm install 在错误的 Electron 目录中创建文件

node.js - 使用 Electron 的第 3 方用户身份验证

javascript - 嵌入式 Node/javascript 沙箱?

visual-studio-2017 - 如何: Create Item Templates in Visual Studio 2017

node.js - 如何在JavaScript中调试c++生成的* .so文件?