如何在electron中集成npm或者说node

发布于 2022-09-12 13:04:01 字数 211 浏览 14 评论 0

如何在electron中集成npm或者说node

主要会执行命令行调用npm install 和 run
而用户的电脑不一定会有Node环境
所以想集成进去
目前有下载好Node文件放进去,调用execFile
以及一切Node执行命令的API都试过
都是开发环境无任何问题 打包后(并且删掉本地的node模拟无node环境)就不行
请各位大佬指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

Hello爱情风 2022-09-19 13:04:01

你需要的是使用npm的能力。
npm本身属于nodejs的一个模块,所以你问题其实可以分成两个来问。

1,如何在客户机上静默安装nodejs并设置好相应的环境变量。
2,如何以编程方式启动npm

第一种方式跟平台紧密相关,实现以及后续维护都比较繁琐,好处是有一个完整独立的nodejs环境。
因为electron自身集成了nodejs,让第二种方法成为可能。

给你一个简单的例子
首先在你electron项目中本地安装npm

npm install npm

之后就可以在业务代码中像普通模块一样使用npm

const { writeFileSync, mkdirSync, existsSync } = require("fs");
const { resolve } = require("path");
const npm = require("npm");
const { homedir } = require("os");

// 建立一个目标文件夹, 并切换到此路径
const dest = resolve(homedir(), "test");
if (!existsSync(dest)) mkdirSync(dest);
process.chdir(dest);

// 写入package.json
writeFileSync(
  resolve(dest, "package.json"),
  JSON.stringify({
    scripts: {
      test: "echo hello npm",
    },
  })
);

npm.load({}, (err) => {
  // npm run
  npm.run("test");

  // npm install
  npm.commands.install(["typescript"], (err) => {
    console.log(err || "done");
  });
});
我不咬妳我踢妳 2022-09-19 13:04:01

这个很常见的问题,普通方式开发的软件也会有环境依赖的问题,一般这种是通过NSIS这类封装工具对我们的原始安装包进行二次包装、压缩,这个过程中就可以手动加入nodejs到软件目录下,然后安装时把安装目录下的nodejs指向系统的环境变量,这样就可以全局执行node的各种操作了。重要是的NSIS这类工具还可以对安装包做进一步压缩,减少体积,这对Electron不招人待见的体积控制来说,是个福利啊。

最近也是做了一个纯本地的应用,后端没有打包,只打了前端,在启动软件时用node启动后端服务,关闭软件时结束node进程。

墨落成白 2022-09-19 13:04:01

electron自带node环境,配置的时候允许注入就行了

new BrowserWindow({
    width: 1920,
    height: 1080,
    backgroundColor: '#fff',
    webPreferences: {
      nodeIntegration: true
    }
  })
撕心裂肺的伤痛 2022-09-19 13:04:01

兄弟 这个问题解决了吗? 求指导 我现在electron中集成npm 总是报错

瑶笙 2022-09-19 13:04:01

请问解决了吗?

街角卖回忆 2022-09-19 13:04:01

请问解决了吗?我也碰到了这个问题?怎么解决的,感谢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文