Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

86
Visualizações
Functioning code no longer working after being minified and deployed

I have some code in a web worker that is working perfectly locally, but as soon as I build and deploy (which minifies the code) it no longer works.

The unminified code looks like this:

const mapSourceCode = (treeNode, mfi, {objectType, types, fileType, templateType}) => {
        let sourceCodeMap = new Map();
        let ownerMap = new Map();
        let sourceCodeList = [];
        let ownerList = [];

        let mfiMap = new Map();
        mfi.forEach(row => mfiMap.set(row.uuid, row));

        let sourceCodeObjects = mfi.filter(row => types.includes(row.objectTypeUuid));
        if(sourceCodeObjects.length < 1)
            return {sourceCodeMap, sourceCodeTree: undefined};

        try {
            sourceCodeObjects.forEach(sourceObj => {
                let owner = findOwner(sourceObj, sourceObj, mfiMap, {...treeNode.data}, objectType);

The minified code is this:

i = function(e, t, n) {
        var c = n.objectType
          , o = n.types
          , i = n.fileType
          , u = n.templateType
          , l = new Map
          , s = new Map
          , f = []
          , p = []
          , m = new Map;
        t.forEach((function(e) {
            return m.set(e.uuid, e)
        }
        ));
        var h = t.filter((function(e) {
            return o.includes(e.objectTypeUuid)
        }
        ));
        if (h.length < 1)
            return {
                sourceCodeMap: l,
                sourceCodeTree: void 0
            };
        try {
            if (h.forEach((function(n) {
                var r = a(n, n, m, Object(d.a)({}, e.data), c);

The line it's erroring out on is {...treeNode.data} on the last line. The error is ReferenceError: d is not defined

I can't figure out what the issue could be? Like I said everything runs great on locally. Any help is greatly appreciated

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

I found the issue, in case anybody runs into this same thing. Normally when using web workers you need to tell your builder (webpack) to build / compile workers separately. I'm using the default create-react-app configuration which doesn't give access to that part of webpack. unless you eject from create-react-app completely (which I'm currently not ready to do)

I'm using the react hook called useWorker, where I pass the function I want to allocate to the worker.

When your code is optimized and minified variable names are replaced with smaller names (mostly 1 or 2 letters from what I've seen). Because I didn't have any custom loaders to load my worker code, it used variables from the global scope assuming it would have access. When the code was extracted to a separate thread outside the main thread it no longer had access to those variables and thus didn't work.

The fix is to

  1. Add a loader (you can either eject from create-react-app, or there may be some npm libraries that will give you access to that particular part of webpack)
  2. Or my solution was to create the function in a string and create a function using the Function constructor like so

const generateFunction = new Function('treeNode', 'mfi', 'types', 'action', generateFunctionString);

Where the generateFunctionString was a string like: "return a + b"

I then passed that function into my useWorker hook:

const [generatorWorker] = useWorker(generateFunction);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda