electron 如何导入某文件夹下的全部模块?

发布于 2022-09-12 03:52:05 字数 744 浏览 14 评论 0

开发平台: win10

个人使用,不打算发布到npm

我想实现的是:设置Extensions文件夹,里面存放扩展,electron运行时自动加载Extensions里的所有扩展
比如 Extensions/test.js

// test.js
module.exports = (ctx) => {
  const register = () => {
    console.log(ctx);
  }
  return {
    register
  }
}

Extensions文件夹在程序根目录

我的实现(伪代码):

import { app } from 'electron'
import path from 'path'
const pluginPath = path.join( path.dirname(app.getPath('exe')), 'Extensions')

getPlugin(path) {
    return require(path)('233')
}

getPlugin(pluginPath)
  

运行后报错:

Error: Cannot find module 'E:\Project\Electron\MoeEx\node_modules\electron\dist\Extensions\test.js'

请问,我应该怎样实现呢?

谢谢

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

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

发布评论

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

评论(1

影子的影子 2022-09-19 03:52:05

hi,webpack中有一个好用的属性,相信你会喜欢的require.context

实例:

目录

./demo
├ demo.js
├ context
      ├ index.js
      ├ yyy.js
      └ xxx.js

index.js

const files = require.context('.', false, /\.js$/)
const modules: any = {}
files.keys().forEach((key) => {
  if (key === './index.js') {
    return
  }
  modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
})
export default modules

yyy.js

export default "yyy";

xxx.js

export default "xxx";

demo.js

import demo from "./context";

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