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