Hi,
Very similar to Graylog plugin UI not coming up in production server - my plugin works in development mode (“npm run start”) but does not work when deployed in production.
In the UI, the browser fetches /assets/plugin/org.graylog.plugins.reports.plugins.reports.ReportsPlugin/plugin.org.graylog.plugins.reports.ReportsPlugin.11e7b7eea0147f11127f.js - which in turn tries to add a new script element for /assets/1.1.11e7b7eea0147f11127f.js - but this returns a 404, because the asset is not part of the main server, it is part of the plugin - so its path should be under /assets/plugin/…
Also, having a look at the “build” directory and comparing it with other plugins, it looks like webpack is not generating the right output:
Asset Size Chunks Chunk Names
1.1.1932fafd00279821fbb8.js.map 4.47 MB 1 [emitted]
31a71554a7917f4d60fb34b775a158da.jpg 261 kB [emitted]
1.1.1932fafd00279821fbb8.js 3.76 MB 1 [emitted]
2.2.1932fafd00279821fbb8.js 3.68 MB 2 [emitted]
3.3.1932fafd00279821fbb8.js 3.68 MB 3 [emitted]
plugin.org.graylog.plugins.reports.ReportsPlugin.1932fafd00279821fbb8.js 114 kB 4 [emitted]
plugin.org.graylog.plugins.reports.ReportsPlugin
5.5.1932fafd00279821fbb8.js 15.1 kB 5 [emitted]
6.6.1932fafd00279821fbb8.js 25 kB 6 [emitted]
7.7.1932fafd00279821fbb8.js 8.15 kB 7 [emitted]
8.8.1932fafd00279821fbb8.js 2.11 kB 8 [emitted]
0.0.1932fafd00279821fbb8.js.map 4.47 MB 0 [emitted]
0.0.1932fafd00279821fbb8.js 3.76 MB 0 [emitted]
2.2.1932fafd00279821fbb8.js.map 4.38 MB 2 [emitted]
3.3.1932fafd00279821fbb8.js.map 4.38 MB 3 [emitted]
plugin.org.graylog.plugins.reports.ReportsPlugin.1932fafd00279821fbb8.js.map 135 kB 4 [emitted]
plugin.org.graylog.plugins.reports.ReportsPlugin
5.5.1932fafd00279821fbb8.js.map 14.3 kB 5 [emitted]
6.6.1932fafd00279821fbb8.js.map 25.8 kB 6 [emitted]
7.7.1932fafd00279821fbb8.js.map 11.3 kB 7 [emitted]
8.8.1932fafd00279821fbb8.js.map 2.29 kB 8 [emitted]
favicon.png 701 bytes [emitted]
index.html 380 bytes [emitted]
module.json 279 bytes [emitted]
plugin.org.graylog.plugins.reports.ReportsPlugin.module.json 279 bytes [emitted]
When comparing this to other plugins, each .js file is prefixed with the plugin name, eg: plugin.org.graylog.plugins.aggregates.AggregatesPlugin.13cee0813b7a098ad242.js
This is my webpack.config.js:
const PluginWebpackConfig = require('graylog-web-plugin').PluginWebpackConfig;
const loadBuildConfig = require('graylog-web-plugin').loadBuildConfig;
const path = require('path');
module.exports = new PluginWebpackConfig('org.graylog.plugins.reports.ReportsPlugin', loadBuildConfig(path.resolve(__dirname, './build.config')), {
// Here goes your additional webpack configuration.
});
and this is my build.config.js:
const path = require('path');
module.exports = {
web_src_path: path.resolve(__dirname, '../graylog2-server/graylog2-web-interface'),
};
Also, I noticed the entry point to other plugins does NOT create an additional script tag, whereas my plugin’s entry point generated by webpack does.
Is there anything else I can check?