Closed karlitos closed 3 years ago
Yes, I think that it is related to electron or webpack environments, maybe similar to #13 .
Can you try to provide fs
module as a staticDependencies
. You can create LivePluginManager with a code like:
const pluginManager = new PluginManager({
staticDependencies: {
'fs': require('fs')
}
});
Also it is possible to access/debug the host application, where live plugin manager is used. Or a similar environment where I can reproduce the problem.
thanks
Dear David, many thanks that solved that issue. 👍 This is great news, because your wonderful project will be a very important part of one of my OSS projects.
So, I pushed an updated to the electron-app
branch of my project. With
const pluginManager = new PluginManager({
pluginsPath: localThemesPath,
staticDependencies: {
fs: require('fs'),
path: require('path'),
}
});
I was able to fetch some of the json-resume-themes
and used their render method.
When looking in the directory, where I cache the installed packages, there were no packages fs
or path
. But then later I got Error: Cannot find module lodash and Error: Cannot find module mustache, even though those packages were present in the cache directory. And since my own app does not depend on mustache
, adding it to the staticDependencies breaks the build.
You can check out the electron-app
branch and try to start the electron app to investigate the problem. Just select for example the jsonresume-theme-moon
and then click on process resume, which will install and require the theme and try to create a HTML markup.
lodash
and mustache
are dependencies of jsonresume-theme-moon
? Looking here https://raw.githubusercontent.com/adamjmoon/jsonresume-theme-moon/master/package.json they are marked as devDependencies
but live-plugin-manager doesn't install development dependencies, so maybe they are not installed. Can you try to put it in dependencies
instead? Also put every other required modules in dependencies...
Hi, you are absolutely right. I think the author of this particular theme did a mistake putting those packages in a devDependencies
. I would like to offer the users to use as many of those themes as possible, on the other hand I can't and don't want manage some 250+ 3rd party packages - I guess I will be going to try all the themes one-by-one and blacklist those, with dependency issues I can't fix on my side.
Thank you thought for helping me and explaining how to use the static dependencies with live-plugin-manager
- we might close this issue at this moment. Once again - great work you did here, saving me the necessity of bundling 25MB of NPM with my app.
Thanks @karlitos ! I'm closing the issue for now. Probably I need to investigate better why in some circustances (electron?, webpack?) some dependencies are not available (like fs
and path
) but I will probably create a dedicated issue.
I know this issue is closed. However, I can confirm I had the same issue with my webpacked package. I do wonder if it is a webpack issue or maybe a vm issue.
Also, I think it might be useful to maybe put some of this info into the Readme since it was a head scratcher for me until I was luckily able to find this thread. Thank you so much for the awesome project!
@NateAGeek Are you running inside electron? See #13 Can you describe your environment and version?
Hello,
I am trying to use the live-plugin-manager to allow users use different
json-resume
themes without needing to bundle them with my app. The themes are basically nodejs packages exposing arender
method.My code looks like this:
Calling
getLocalTheme
end in the catch block just afterawait pluginManager.require(theme.name)
I get:Needles to say I am in the electron environment and I build my app with the help of
electron-forge
. Here is the complete output, when I started my app with the DEBUG=* flag: