gpt4 book ai didi

node.js - 在 Linux Ubuntu 的 Windows 子系统中链接 Windows 命令

转载 作者:行者123 更新时间:2023-12-04 15:26:54 26 4
gpt4 key购买 nike

我正在使用 Windows Subsystem for Linux 在 Windows 10 上进行 Web 开发使用 Ubuntu 18.04。在 Ubuntu 中使用 Node.js 和 NPM 并运行开发服务器和 API 服务器是可行的。

当我在 WSL 中时,我可以运行命令:

npm i
node app
npm run serve
# etc...

现在又出现了新的情况。我有一个项目使用 Nightmare.js (改进但类似于 Phantom.js )将安装 Electron运行 npm i 时的 headless 浏览器。在 WSL 中运行 npm i 将安装 Ubuntu 版本的 Electron,当尝试运行时什么也不会发生,浏览器将不会打开。这是合乎逻辑的,因为 WSL Ubuntu 没有可视环境,因此无法在其中打开浏览器。

如果我使用 PowerShell 或 CMD 运行 npm i(将使用 Windows 上安装的 npm 而不是 WSL),将安装 Windows 版本的 Electron,我可以使用 node 运行它app 在 PowerShell 中,它将按预期工作,浏览器打开等...

这创造了有趣的先例。看起来我有时需要使用 Windows 命令运行我的应用程序。而不是直接在 WSL 中执行 npm inode app 我必须切换到 CMD 或 PowerShell 并在那里执行它们,以便使用 npm 和 Node 的 Windows 版本而不是WSL Ubuntu 的。这不是很方便,我想从 WSL 完成这一切。 Microsoft 的 Visual Studio Code 就是这种行为的一个例子。与 Remote-WSL安装了附加组件我可以在 WSL Ubuntu 中运行 code 命令,VSCode 将在 Windows 中打开。

这是我的问题:有没有办法像使用 VSCode 一样将 WSL Ubuntu 中的命令链接到主机 Windows 系统?理想情况下,我希望在我的 WSL Ubuntu 中有这样的东西: windows-npm i, windows-node app 将在主机 Windows 系统上运行 npmnode在 WSL Ubuntu 上使用相同的命令。

最佳答案

这个问题几乎无人关注,所以我决定 self 修复。我仍在寻找更好的/ native 解决方案,但这是我想出的解决方法。


WSL-Link

允许 WSL 用户从 linux 子系统中在主机 Windows 系统上运行任何 CMD 命令。

要求

  • Windows 10
  • WSL
  • Node.js
  • 新公共(public)管理

Node and NPM have to be installed both in linux subsystem and on Windows host system.

安装

wsl-link has to be installed separately in subsystem and on Windows host

在子系统 linux 上:

npm i wsl-link -g

在 Windows 主机上:

npm i wsl-link -g

Windows 启动

为了在 Windows 启动时运行脚本,我使用 PM2 和提供的守护程序脚本。

在 Windows 主机上安装 pm2 和 pm2-windows-startup:

npm i pm2 pm2-windows-startup -g

安装 pm2-startup:

pm2-startup install

运行 wsl-link pm2 守护进程:

wsl-link-pm2

保存pm2进程列表

pm2 save

您现在可以确认 wsl-link 应用程序正在运行,其中:

pm2 status

pm2 status display

用法

在 Windows 启动服务器上(如果不使用 pm2 启动设置):

wsl-link

在子系统 linux 上使用(npm -v 将在主机 Windows 上运行):

wsl-link npm -v

案例

在子系统 linux 上设置一个项目(或使用现有的):

mkdir wsl-link-test
cd wsl-link-test
touch app.js
npm init

应用程序.js:

const Nightmare = require('nightmare');

(async () => {
await Nightmare({
show: true
})
.goto('https://google.com');
})();

安装 Windows 版本的 Nightmare.js 并在 Windows 上运行它。

wsl-link npm i nightmare --save
wsl-link node app

您应该会看到 Electron 浏览器在您的 Windows 主机上打开。

Electron Running

关于node.js - 在 Linux Ubuntu 的 Windows 子系统中链接 Windows 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62085598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com