This happens in 1.8:
[ERROR] console - (node:27731) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_CALLBACK]: Callback must be a function
at makeCallback (fs.js:136:11)
at Object.rename (fs.js:578:14)
at doImport (/opt/etherpad-lite/src/node/handler/ImportHandler.js:104:16)
at process._tickCallback (internal/process/next_tick.js:68:7)
This happens when importing a file without known extension in the file name (e.g. no extension at all). As a workaround, you have to set the file name and let it end with an extension, e.g. .txt
.
Edit by @muxator: this happens not only when no extension is given, but for every unknown extension (including none) when allowUnknownFileEnds
in settings.json
is true
. Changed the title accordingly.
Ah okay so this was due to the async work cc @raybellis
https://github.com/ether/etherpad-lite/blob/develop/src/node/handler/ImportHandler.js#L104
This is the offending line, if you upload a whatever.md etc to Etherpad you will see this error.
Do you have time to take a look @raybellis
For me for plugin development I just hack around it.
https://github.com/ether/etherpad-lite/pull/3718/files is my hacky workaround. @raybellis
The non-hacky fix is to replace the call to fs.rename(src, dst, cb)
with await fsp_rename(src, dst)
Ah, I see @tudorconstantin already beat me to it :)
Fixed pulling in #3722 by @tudorconstantin.
Thanks everyone.
Most helpful comment
Fixed pulling in #3722 by @tudorconstantin.
Thanks everyone.