Node.js 构建和打包后,如何在我的electron应用程序中引用powershell脚本?

Node.js 构建和打包后,如何在我的electron应用程序中引用powershell脚本?,node.js,electron,Node.js,Electron,我已经做了一个电子申请,主要是为我的帮助台同事在工作 它的作用(上下文): 它提供了一个简单的gui,可以执行不同的“任务”。例如: 为此,我将使用以下组合: 带电子的节点 反应 节点Powershell 问题: 当我在开发模式下运行应用程序时,它正在正常运行。但是在我用electron构建并打包它之后,NPM包node powershell再也找不到.ps1脚本了。 我想我已经发现了这个问题,但我不知道这个问题的解决方案是什么。 节点powershell需要脚本路径和命令数组。 我将其

我已经做了一个电子申请,主要是为我的帮助台同事在工作

它的作用(上下文):

它提供了一个简单的gui,可以执行不同的“任务”。例如:

为此,我将使用以下组合:

  • 带电子的节点
  • 反应
  • 节点Powershell
问题:

当我在开发模式下运行应用程序时,它正在正常运行。但是在我用electron构建并打包它之后,NPM包
node powershell
再也找不到
.ps1
脚本了。 我想我已经发现了这个问题,但我不知道这个问题的解决方案是什么。
节点powershell
需要脚本路径和命令数组。 我将其设置为:

    const p1 = require('path').resolve();
    const scriptPath = require('path').join(p1, 'src/PowershellScripts/AddMailboxPermissions.ps1');
然后
ps.addCommand(脚本路径,命令)(节点powershell)

如前所述,这在Web包服务器的开发模式下运行良好,但在打包后运行时,我会出现以下错误:

找不到C:\Users\Huberdo\Projekte\Powershell SAS App\Client\builds\basic-electron-react-boilerplate-win32-x64\src\PowerShellScript\GetRemoteMac.ps1

原因是包装具有以下结构。
.ps1
文件现在具有以下路径:

C:\Users\Huberdo\Projekte\Powershell SAS应用程序\Client\builds\basic-electron-react-boilerplate-win32-x64\resources\App\src\PowershellScripts

所以这是主要问题。我该如何“以正确的方式”将其打包,以使其在以后实际工作

信息:

  • 我在Windows10x64机器上运行这个
  • package.json脚本:
    • “dev”:“webpack dev server--hot--host 0.0.0.0--config=./webpack.dev.config.js”,
      “build”:“webpack--config webpack.build.config.js”,
      “包”:“webpack--config webpack.build.config.js”,
  • 当我在dev模式下运行它时,它解析了正确的路径,并且一切正常
我希望你们中有人能帮助我,或者引导我走向正确的方向

可能的想法:

引用一个完全不同的路径,并使用gulp任务将ps1文件复制到另一个目录中?从来没用过。这是一个可能的解决方案吗?如果是,如何最好地实现这一点

更新 当我将
src
文件夹从
C:\Users\Huberdo\Projekte\Powershell SAS App\Client\builds\basic-electron-react-boilerplate-win32-x64\resources\App
复制到根
C:\Users\Huberdo\Projekte\Powershell SAS App\Client\builds\basic-electron-react-boilerplate-win32-x64>中时,它又开始工作了。所以这主要是一个路径问题,我不知道如何解决它

最后但并非最不重要的一点是直接链接到github上的项目:

这里我称之为
ps1
脚本:


!谢谢大家!

我正在做类似的事情,但我用于PowerShell脚本的方法是将它们创建为PowerShell模块。然后你可以把它们放在一个有效的PSModule位置上,你就可以走了。您可以编写一个powershell脚本,将模块复制到正确的位置,然后将包复制到桌面或需要的任何位置

一个非常简单的模块可以是这样的:

C:\Program Files\WindowsPowerShell\Modules中创建一个名为MyModuleTest的文件夹。在此文件夹中创建一个名为MyModuleTest.psm1的文件。在此PSM1文件中创建一个函数,例如

function Invoke-MyModuleTest {

Write-host "This is My Module"

}
保存文件,打开powershell控制台会话,然后如果运行Invoke MyModuleTest,它将输出到控制台

您可以阅读有关模块的更多信息

您还可以找到一些更复杂模块的好例子


一旦您将脚本转换为模块,您就可以像任何cmdlet一样调用它们,我目前没有任何东西可以共享

谢谢你的回答。听起来很有趣。请你进一步解释一下你是如何做到这一点的?你在github上有这样的例子吗?Thx@GeraltDieSocke更新原始响应,希望它更有用