Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] [Dúvida] Após importação e exportação o codigo não esta mais funcionando

Oi tudo bom ? realizei o passo a passo porem depois do npm init o codigo parou de funcionar e apresenta o seguinte erro

node src/cli ./teste.txt node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[Error: ENOENT: no such file or directory, open 'C:\Users\marce\OneDrive\Documents\Laneway\TERM 3 2024\new_project\node,react.js\undefined\result.txt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\Users\\marce\\OneDrive\\Documents\\Laneway\\TERM 3 2024\\new_project\\node,react.js\\undefined\\result.txt'
}

Node.js v20.12.0

O codigo no momento esta dessa forma: codigo CLI

import fs from 'fs';
import trataErros from './errors/funcErr.js';
import { countWords } from './index.js';
const archiveWay = process.argv;
const link = archiveWay[2];
const direction = archiveWay[3];

fs.readFile(link, 'utf-8', (err, text) => {
    try{
        if (err) throw err
        const result = countWords(text);
        createAndSaveArchive(result, direction)
    } catch(err){
        trataErros(err);
    }
});

async function createAndSaveArchive(listWords, direction){
    const newArchive = `${direction}/result.txt`;
    const textWords = JSON.stringify(listWords);
    try{
        await fs.promises.writeFile(newArchive, textWords);
        console.log('archive created');
    }catch(err){
        throw err;
    }
}

Codigo index.js

export function countWords(text){
    const paragrafos = extractParagrafos(text);
    const contagem = paragrafos.flatMap((paragrafo) => {
        if (!paragrafo) return [];
        return verifyDoubleWords(paragrafo);
    })
    return contagem
}

function extractParagrafos(text){
    return text.toLowerCase().split('\n');
}

npm init:

{
  "name": "node_react",
  "version": "1.0.0",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}

npm install

{
  "name": "node_react",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "node_react",
      "version": "1.0.0",
      "license": "ISC"
    }
  }
}

o erro fala que esta dando problema no promise da function await fs.promises.writeFile(newArchive, textWords); vou tentar fazer mais umas aulas e ver se consigo concertar porem ainda tenho dificuldade em identificar os erros.

2 respostas
solução!

Oi Amanda, tudo bem?

O erro ENOENT: no such file or directory indica que o Node.js não conseguiu encontrar o diretório ou arquivo especificado. No seu caso, parece que o caminho para o arquivo result.txt está incorreto ou incompleto.

Vamos verificar alguns pontos:

  1. Verifique o valor de direction:

    • Certifique-se de que o argumento direction está sendo passado corretamente quando você executa o script. Por exemplo, se você está executando node src/cli ./teste.txt ./output, direction deve ser ./output.
  2. Criação do diretório:

    • Se o diretório especificado em direction não existir, você precisará criá-lo antes de tentar escrever o arquivo. Você pode adicionar um código para garantir que o diretório exista.

Aqui está uma versão ajustada do seu código para incluir a verificação e criação do diretório:

import fs from 'fs';
import path from 'path';
import trataErros from './errors/funcErr.js';
import { countWords } from './index.js';

const archiveWay = process.argv;
const link = archiveWay[2];
const direction = archiveWay[3];

fs.readFile(link, 'utf-8', (err, text) => {
    try {
        if (err) throw err;
        const result = countWords(text);
        createAndSaveArchive(result, direction);
    } catch (err) {
        trataErros(err);
    }
});

async function createAndSaveArchive(listWords, direction) {
    const newArchive = path.join(direction, 'result.txt');
    const textWords = JSON.stringify(listWords);

    try {
        // Verifica se o diretório existe, se não, cria-o
        await fs.promises.mkdir(direction, { recursive: true });
        await fs.promises.writeFile(newArchive, textWords);
        console.log('Arquivo criado com sucesso');
    } catch (err) {
        trataErros(err);
    }
}

Pontos importantes:

  • path.join: Usei path.join para garantir que o caminho do arquivo seja construído corretamente, independente do sistema operacional.
  • fs.promises.mkdir: Adicionei uma verificação para criar o diretório se ele não existir. O { recursive: true } garante que todos os diretórios no caminho sejam criados conforme necessário.

Tente rodar o script novamente com esses ajustes e veja se o problema persiste, caso persista, peço que compartilhe todo o seu código, usando o GitHub ou Drive do Google. Assim poderei fazer testes.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigada! o codigo funcionou!