Translator: unit tests passing, but console gives errors; fcc tests failing

Tell us what’s happening:
Describe your issue in detail here.

Locally all my unit and functional tests pass, but console gives error below. I have no idea what to make of this error. On fcc many tests fail. Response on fcc varies, sometimes error:

net::ERR_BLOCKED_BY_CLIENT

Sometimes all kinds of others.

TypeError: Translator is not a constructor
    at userRoutes (/Users/dm/Code/translator/routes/api.js:7:22)
    at Object.<anonymous> (/Users/dm/Code/translator/server.js:28:1)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/Users/dm/Code/translator/components/translator.js:1:17)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/Users/dm/Code/translator/tests/1_unit-tests.js:4:20)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.exports.requireOrImport (/Users/dm/Code/translator/node_modules/mocha/lib/esm-utils.js:20:12)
    at Object.exports.loadFilesAsync (/Users/dm/Code/translator/node_modules/mocha/lib/esm-utils.js:33:34)
    at Mocha.loadFilesAsync (/Users/dm/Code/translator/node_modules/mocha/lib/mocha.js:427:19)
    at singleRun (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run-helpers.js:156:15)
    at exports.runMocha (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run-helpers.js:225:10)
    at Object.exports.handler (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run.js:366:11)
    at /Users/dm/Code/translator/node_modules/yargs/lib/command.js:241:49
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
air:translator dm$ npm run test

> american-british-english-translator@2.0.0 test
> mocha --timeout 5000 --require @babel/register --recursive --exit --ui tdd tests/


TypeError: Translator is not a constructor
    at Object.<anonymous> (/Users/dm/Code/translator/routes/api.js:4:20)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/Users/dm/Code/translator/server.js:8:27)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/Users/dm/Code/translator/components/translator.js:1:17)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/Users/dm/Code/translator/tests/1_unit-tests.js:4:20)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Module._compile (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
    at Object.newLoader [as .js] (/Users/dm/Code/translator/node_modules/pirates/lib/index.js:104:7)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:816:12)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.exports.requireOrImport (/Users/dm/Code/translator/node_modules/mocha/lib/esm-utils.js:20:12)
    at Object.exports.loadFilesAsync (/Users/dm/Code/translator/node_modules/mocha/lib/esm-utils.js:33:34)
    at Mocha.loadFilesAsync (/Users/dm/Code/translator/node_modules/mocha/lib/mocha.js:427:19)
    at singleRun (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run-helpers.js:156:15)
    at exports.runMocha (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run-helpers.js:225:10)
    at Object.exports.handler (/Users/dm/Code/translator/node_modules/mocha/lib/cli/run.js:366:11)
    at /Users/dm/Code/translator/node_modules/yargs/lib/command.js:241:49
    at processTicksAndRejections (node:internal/process/task_queues:96:5

Your project link(s)

solution: https://replit.com/@dmikes/translator
githubLink: GitHub - danmikes/translator: A boilerplate for a freeCodeCamp project.

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.115 Safari/537.36

Challenge: American British Translator

Link to the challenge:

I think I know what is causing the problem, but not sure how to fix it. I think the error happens when the replaced string occurs at the start of the text. The translation then starts with ‘<span …’ and this makes it invalid json.
If this is indeed (one of) the problem(s). How to fix it?

I found all bugs!

(1) I had an error in the highlight method: <\span> instead of . Since my unit tests had the same error, they passed locally. This caused the entire text to be highlighted.

(2) Regex for time was incorrect. It missed the first digit in double digit hour. Again my unit test missed it. I saw it on screen though.

(3) The response from Translator.translate() was incorrect. I had to add the object text to response in case of no need to translate. My tests missed it, because I was not using deepEqual.

All in all I am glad to have found it and learnt a lot from it.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.