bscan / PerlNavigator

Perl Language Server that includes syntax checking, perl critic, and code navigation
MIT License
190 stars 35 forks source link

TypeError *.replace|replaceAll is not a function in neovim #105

Closed pinkfloydsito closed 7 months ago

pinkfloydsito commented 7 months ago

I am using neovim with the perlnavigator setup and keep encountering those errors when I launch the process. Does someone has any clue on it? Am I missing a configuration in the file?

Config:

          require("lspconfig").perlnavigator.setup({
            settings = {
              perlnavigator = {
                perlPath = "perl",
                enableWarnings = true,
                perltidyProfile = "",
                perlcriticProfile = "",
                perlcriticEnabled = true,
              },
            },
          })

LspLog:

[START][2023-11-19 22:35:25] LSP logging initiated
[ERROR][2023-11-19 22:35:25] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/laandres.caceres/.local/share/nvim/mason/bin/lua-language-server"   "stderr"    "script/core/code-action.lua:726: attempt to call a nil value (field 'isUndefinedGlobal')\nstack traceback:\n\tscript/core/code-action.lua:726: in local 'callback'\n\tscript/parser/guide.lua:688: in function 'parser.guide.eachSourceBetween'\n\tscript/core/code-action.lua:725: in upvalue 'checkMissingRequire'\n\tscript/core/code-action.lua:744: in function 'core.code-action'\n\tscript/provider/provider.lua:875: in function <script/provider/provider.lua:862>\n\t[C]: in function 'xpcall'\n\tscript/proto/proto.lua:191: in function <script/proto/proto.lua:166>\n"
[START][2023-11-19 22:36:48] LSP logging initiated
[WARN][2023-11-19 22:36:48] ...lsp/handlers.lua:137 "The language server perlnavigator triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
[ERROR][2023-11-19 22:36:49] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: violation.replace(...).replaceAll is not a function\n      at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n      at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n      at Array.forEach (<anonymous>)\n      at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n}  reason:  TypeError: violation.replace(...).replaceAll is not a function\n    at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n    at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n    at Array.forEach (<anonymous>)\n    at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n"
[ERROR][2023-11-19 22:36:50] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: stdout.replaceAll is not a function\n      at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n      at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n      at runMicrotasks (<anonymous>)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n      at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n}  reason:  TypeError: stdout.replaceAll is not a function\n    at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n    at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n    at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n"
[ERROR][2023-11-19 22:36:50] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: violation.replace(...).replaceAll is not a function\n      at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n      at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n      at Array.forEach (<anonymous>)\n      at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n}  reason:  TypeError: violation.replace(...).replaceAll is not a function\n    at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n    at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n    at Array.forEach (<anonymous>)\n    at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n"
[ERROR][2023-11-19 22:36:50] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: stdout.replaceAll is not a function\n      at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n      at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n      at runMicrotasks (<anonymous>)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n      at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n}  reason:  TypeError: stdout.replaceAll is not a function\n    at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n    at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n    at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n"
[ERROR][2023-11-19 22:37:05] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: violation.replace(...).replaceAll is not a function\n      at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n      at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n      at Array.forEach (<anonymous>)\n      at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n}  reason:  TypeError: violation.replace(...).replaceAll is not a function\n    at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n    at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n    at Array.forEach (<anonymous>)\n    at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n"
[ERROR][2023-11-19 22:37:06] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: stdout.replaceAll is not a function\n      at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n      at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n      at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n}  reason:  TypeError: stdout.replaceAll is not a function\n    at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n    at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n    at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n"
[ERROR][2023-11-19 22:37:10] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: violation.replace(...).replaceAll is not a function\n      at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n      at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n      at Array.forEach (<anonymous>)\n      at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n}  reason:  TypeError: violation.replace(...).replaceAll is not a function\n    at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n    at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n    at Array.forEach (<anonymous>)\n    at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n"
[ERROR][2023-11-19 22:37:10] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: stdout.replaceAll is not a function\n      at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n      at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n      at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n}  reason:  TypeError: stdout.replaceAll is not a function\n    at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n    at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n    at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n"
[ERROR][2023-11-19 22:37:13] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: violation.replace(...).replaceAll is not a function\n      at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n      at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n      at Array.forEach (<anonymous>)\n      at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n}  reason:  TypeError: violation.replace(...).replaceAll is not a function\n    at maybeAddCriticDiag (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:245:50)\n    at /Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:182:9\n    at Array.forEach (<anonymous>)\n    at perlcritic (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:181:24)\n"
[ERROR][2023-11-19 22:37:13] .../vim/lsp/rpc.lua:734    "rpc"   "perlnavigator" "stderr"    "Caught an unhandled Rejection at: Promise  Promise {\n  <rejected> TypeError: stdout.replaceAll is not a function\n      at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n      at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n      at processTicksAndRejections (internal/process/task_queues.js:93:5)\n      at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n}  reason:  TypeError: stdout.replaceAll is not a function\n    at buildNav (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/parseTags.js:7:21)\n    at perlcompile (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/diagnostics.js:52:50)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n    at async validatePerlDocument (/Users/laandres.caceres/.local/share/nvim/mason/packages/perlnavigator/node_modules/perlnavigator-server/out/server.js:206:19)\n"
bscan commented 7 months ago

Hi @pinkfloydsito, thanks for filing this issue. I think I see what's happening. We refactored a bit last month and introduced the use of the replaceAll function as cleaner than using replace with a global regex. However, I see now that replaceAll was only introduced in Node.js v15 in October 2020. My guess is that your local environment is using an older version of node.js that does not have this function.

Can you check your node.js version? Upgrading it may help. I should also look into testing the Navigator on various versions of node (and perl). If I revert the replaceAll changes, that alone may allow running on many more versions.

pinkfloydsito commented 7 months ago

Hi there, yes bumping the nodejs version completely helped helped! It is working fine now

bscan commented 7 months ago

Thanks for filing the issue. I bumped the required node version in package.json which should also result in more helpful errors.