senecajs / seneca

A microservices toolkit for Node.js.
http://senecajs.org
MIT License
3.95k stars 314 forks source link

fatal error: use-plugin: Could not load plugin not_found #883

Open flameleo11p opened 2 years ago

flameleo11p commented 2 years ago

npm i seneca

"seneca": "^3.23.3" Scene: when using multiple

divided seneca ( connected different business) in a project

[1] file: src.zip

├── package.json ├── package-lock.json ├── src │   ├── app.js │   ├── data_api │   │   ├── index.js │   │   └── my_plugin.js │   └── render_api │ ......  ├── index.js │ ......  ├── my_plugin2.js │ ......  └── my_plugin.js └── src.zip

init multi seneca instance in different folder seneca2 will load plugins in folder1 (seneca1's folder) then seneca2.act link to folder1.my_plugin.js

if swap seneca1 and seneca2 init sequence will change the fatal error & exec result .

// "seneca": "^3.23.3" // src/app.js const seneca1 = require("./data_api/index.js")() const seneca2 = require("./render_api/index.js")()

var print = function (err, ret) { console.log(ret) }

seneca1.act('say:fuck', print) seneca2.act('say:fuck', print) seneca2.act('say:fuck2', print)

`

` // xxx_api/index.js const Seneca = require('seneca')

module.exports = function () { var sen = Seneca() .quiet() // only log errors .use('my_plugin')

return sen; }

`

[2] why Seneca().quiet() // only log errors marked that only show log errors, but show nothing

only remove .quiet() will show this super long and complicated info just talk about only plugin not found

error log: {"kind":"fatal","level":600,"plugin":"seneca","tag":"3.23.3","id":"g4p7ajdsuftn/1629198310869/28183/3.23.3/-","code":"not_found","notice":"seneca: use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] .","err":{"eraro":true,"orig":{"eraro":true,"orig":null,"code":"not_found","use-plugin":true,"package":"use-plugin","msg":"use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] .","details":{"options":{},"history":[{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"@seneca/my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"@seneca/my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./@seneca/my_plugin2"},{"module":".","name":"seneca-my_plugin2"},{"module":".","name":"@seneca/my_plugin2"},{"module":".","name":"my_plugin2"},{"module":".","name":"./my_plugin2"},{"module":".","name":"./seneca-my_plugin2"},{"module":".","name":"./@seneca/my_plugin2"}],"name":"my_plugin2","full":"my_plugin2","search":[{"type":"normal","name":"seneca-my_plugin2"},{"type":"normal","name":"@seneca/my_plugin2"},{"type":"normal","name":"my_plugin2"},{"type":"normal","name":"./my_plugin2"},{"type":"normal","name":"./seneca-my_plugin2"},{"type":"normal","name":"./@seneca/my_plugin2"}],"modulepath":".","requirepath":"./@seneca/my_plugin2","found":{"type":"normal","name":"./@seneca/my_plugin2"},"defaults":{},"searchlist":"[ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] "},"callpoint":"at Task.load [as exec] (/drive_d/work/seneca/test/test2/node_modules/seneca/lib/plugin.js:137:43)"},"code":"not_found","use-plugin":true,"package":"seneca","msg":"seneca: use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] .","details":{"errmsg":"use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] .","errline":"at use_plugin_desc (/drive_d/work/seneca/test/test2/node_modules/use-plugin/use.js:171:11)","orig$":{"eraro":true,"orig":null,"code":"not_found","use-plugin":true,"package":"use-plugin","msg":"use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] .","details":{"options":{},"history":[{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"@seneca/my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/node_modules/seneca/seneca.js","name":"my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"@seneca/my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./seneca-my_plugin2"},{"module":"/drive_d/work/seneca/test/test2/src/data_api/index.js","name":"./@seneca/my_plugin2"},{"module":".","name":"seneca-my_plugin2"},{"module":".","name":"@seneca/my_plugin2"},{"module":".","name":"my_plugin2"},{"module":".","name":"./my_plugin2"},{"module":".","name":"./seneca-my_plugin2"},{"module":".","name":"./@seneca/my_plugin2"}],"name":"my_plugin2","full":"my_plugin2","search":[{"type":"normal","name":"seneca-my_plugin2"},{"type":"normal","name":"@seneca/my_plugin2"},{"type":"normal","name":"my_plugin2"},{"type":"normal","name":"./my_plugin2"},{"type":"normal","name":"./seneca-my_plugin2"},{"type":"normal","name":"./@seneca/my_plugin2"}],"modulepath":".","requirepath":"./@seneca/my_plugin2","found":{"type":"normal","name":"./@seneca/my_plugin2"},"defaults":{},"searchlist":"[ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] "},"callpoint":"at Task.load [as exec] (/drive_d/work/seneca/test/test2/node_modules/seneca/lib/plugin.js:137:43)"},"message$":"use-plugin: Could not load plugin my_plugin2; searched the following folder and file paths: [ /drive_d/work/seneca/test/test2/node_modules/seneca: undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src/data_api: undefined, undefined, undefined, undefined, undefined, undefined, ] [ /drive_d/work/seneca/test/test2/src: undefined, undefined, undefined, undefined, undefined, undefined, ] ."},"callpoint":"at use_plugin_desc (/drive_d/work/seneca/test/test2/node_modules/use-plugin/use.js:171:11)","seneca":true,"plugin_callpoint":"at module.exports (/drive_d/work/seneca/test/test2/src/render_api/index.js:8:5)","fatal$":true},"isot":"2021-08-17T11:05:10.886Z","when":1629198310886,"level_name":"fatal","seneca_id":"g4p7ajdsuftn/1629198310869/28183/3.23.3/-"} {"kind":"plugin","case":"READY","name":"transport","level":300,"isot":"2021-08-17T11:05:10.917Z","when":1629198310917,"level_name":"info","seneca_id":"78c8vvmplind/1629198310803/28183/3.23.3/-","seneca_did":"6lgu","plugin_name":"transport"} {"kind":"plugin","case":"READY","name":"transport","level":300,"isot":"2021-08-17T11:05:10.919Z","when":1629198310919,"level_name":"info","seneca_id":"g4p7ajdsuftn/1629198310869/28183/3.23.3/-","seneca_did":"h0u7","plugin_name":"transport"} {"kind":"plugin","case":"READY","name":"my_plugin","level":300,"isot":"2021-08-17T11:05:10.926Z","when":1629198310926,"level_name":"info","seneca_id":"78c8vvmplind/1629198310803/28183/3.23.3/-","seneca_did":"oth7","plugin_name":"my_plugin"} {"kind":"plugin","case":"READY","name":"my_plugin","level":300,"isot":"2021-08-17T11:05:10.926Z","when":1629198310926,"level_name":"info","seneca_id":"g4p7ajdsuftn/1629198310869/28183/3.23.3/-","seneca_did":"qznm","plugin_name":"my_plugin"}

rjrodger commented 2 years ago

Thanks - this is a bug!

The workaround is to use require to load plugins:

        .use(require('./my_plugin'))
        .use(require('./my_plugin2'))

Note however that in general it is better to only create one Seneca instance per service - do you have a use case for creating multiple instances?