Node 12/14 - ReplaceAll error
thim81 opened this issue · 16 comments
I noticed that during automated testing using Github actions, after implementation of the case-anything package, that Node 12/14 throws this error:
(node:2012) UnhandledPromiseRejectionWarning: TypeError: foundPrefix.replaceAll is not a function
at /home/runner/work/openapi-format/openapi-format/node_modules/case-anything/dist/index.umd.js:54:41
at Array.map (<anonymous>)
at splitAndPrefix (/home/runner/work/openapi-format/openapi-format/node_modules/case-anything/dist/index.umd.js:41:36)
at snakeCase (/home/runner/work/openapi-format/openapi-format/node_modules/case-anything/dist/index.umd.js:158:14)
replaceAll is only available from Node 15 and higher.
https://node.green/#ES2021-features--String-prototype-replaceAll
The workaround could be to use the regex /g
example:
mystring.replace(/\./g,' ')
Will release tomorrow
@mesqueeb I pulled in the latest release and was able to build & release my openapi-format package using case-anything.
I mentioned you and the package in the readme, since it is such an excellent package.
https://github.com/thim81/openapi-format#casing-options
https://github.com/thim81/openapi-format#credits
Nog eens ne dikke merci! 🙇
Het blijft wel cool heel de opensource community en dan nog straffer dat 2 Belgen die samenwerken vanuit Japan & het kleine België.
@thim81 zoizo!!! Ik zag dat jij aan een populaire library ook werkt: Portman? Hebbem in de readme gezet ;)
https://github.com/mesqueeb/case-anything#readme
tot noggis he! nog veel success met je libraries :D
@thim81 ik was vergeten om "type": "module"
toe te voegen, en dat gaf problemen in bepaalde libraries voor mij.
net in laatste versie "type": "module"
toegevoegd aan package.json. Werkt alles nog bij jou? Brengt dat geen problemen?
Ik zal straks de laatste versie eens testen.
I tried 2.1.3 in my package and I ran into this error:
} = require("case-anything");
^
Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/Sites/asyncapi-format/node_modules/case-anything/dist/index.umd.js from /Users/Sites/asyncapi-format/asyncapi-format.js not supported.
index.umd.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead rename index.umd.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in /Users/Sites/asyncapi-format/node_modules/case-anything/package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).
at Object.<anonymous> (/Users/Sites/asyncapi-format/asyncapi-format.js:21:5)
at Object.<anonymous> (/Users/Sites/asyncapi-format/bin/cli.js:5:24) {
code: 'ERR_REQUIRE_ESM'
Version 2.1.2 works without a problem.
@thim81 weet jij of dat iets is waar jij iets aan kan doen via een bepaalde setting of is het iets waar alleen ik iets aan kan doen.
Ik kan de suggestie die de error geeft, eens proberen.
Mijn package is nog old skool JS dus ik weet niet er bepaalde zaken gevoelig zijn, maar ik zal eens kijken waar ik uitkom met een paar settings te spelen.
Ik heb wel pas volgende week tijd. Ik hou je op de hoogte.
@mesqueeb Ik heb vanalles geprobeerd, oa door met te spelen met "type": "module"
en "type": "commonjs",
maar zonder success.
@thim81 ik ga proberen dan de build step up te daten tot dat je het weer kan runnen.
Kan ik een project van jou clonen en wat moet ik dan executeren voor die error te krijgen? Dan kan ik blijven testen tot ik het kan fixen.
tuurlijk, het makkelijkste is https://github.com/thim81/openapi-format
Er zitten een paar Jest testen in, die direct gaan falen als je in package.json upgrade naarcase-anything": "2.1.3
of je kan dit commando runnen
cd test/yaml-casing
node ../../bin/cli.js input.yaml --configFile options.yaml