Tengo dos preguntas sobre react.js:
npx create-react-app xxx para inicializar mi proyecto, y cada vez que aparece el error al yarn start Error: Cannot find module 'lodash.template' Require stack: - C:\Desktop\react\myapp\node_modules\workbox-build\build\lib\populate-sw-template.js - C:\Desktop\react\myapp\node_modules\workbox-webpack-plugin\build\generate-sw.js - C:\Desktop\react\myapp\node_modules\workbox-webpack-plugin\build\index.js - C:\\Desktop\react\myapp\node_modules\react-scripts\config\webpack.config.js - C:\Desktop\react\myapp\node_modules\react-scripts\scripts\start.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15) at Function.Module._load (internal/modules/cjs/loader.js:725:27) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at Object.<anonymous> (C:\Users\vanst\OneDrive\Desktop\react\myapp\node_modules\workbox-build\build\lib\populate-sw-template.js:10:18) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Module.require (internal/modules/cjs/loader.js:952:19) { code: 'MODULE_NOT_FOUND', } npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! myapp@0.1.0 start: `react-scripts start` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the myapp@0.1.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\AppData\Roaming\npm-cache\_logs\2020-10-28T16_45_32_029Z-debug.log Pude arreglar esto ejecutando npm install loadash --save , pero tengo que instalar manualmente este módulo cada vez.
yarn start no funcionará correctamente (por lo general, informará que falta algún módulo) a menos que reinstale node_modules .¿Alguien ha encontrado problemas similares?
Actualización 1: el problema 1 también se puede resolver eliminando node_modules y reinstalándolo. Sin embargo, todavía no sé qué lo está causando y por qué funciona.
Actualización 2: Así es como se ve mi paquete.json cuando inicializo un proyecto por primera vez:
{ "name": "temp", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "react": "^17.0.2", "react-dom": "^17.0.2", "react-scripts": "4.0.3", "web-vitals": "^1.0.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }eliminar módulos de nodo y package-lock.json y Ejecutar
yarnHay una diferencia entre el paquete lodash.template y lodash . Si te falta lodash.template, ejecuta:
yarn add lodash.templateSegún su paquete.json , le falta esta dependencia. Al agregar hilo, esto actualizará sus archivos package.json y yarn.lock . Es probable que el problema se solucione de forma permanente.
Cuando está ejecutando yarn add lodash.template , ¿aparece en su dependencia en su package.json ? ¿Tal vez yarn no puede escribir su archivo package.json ? ¿Tiene acceso de escritura a su carpeta? ¿Tal vez npx ha creado esta carpeta a partir de un usuario raíz y no tiene ningún derecho para editar?
yarn para iniciar los scripts, entonces use el yarn para la gestión de paquetes tambiénnode_modules , podría ser alguna acción antivirus en su máquina, lo dudo muchopackage-lock.json para npm o yarn.lock para yarn ) si el administrador de paquetes ha instalado la dependencia; yarn también crea un archivo .yarn-integrity adicional en el directorio node_modules para realizar un seguimiento de los módulos instaladosElimine sus node_modules y package-lock.json y siga los comandos a continuación para la instalación de lodash.template:
$ {sudo -H} npm i -g npm $ npm i --save lodash.templateA mi también me pasó una vez. La instalación de paquetes con privilegios de administrador funcionó para mí.
¿Intentó eliminar la carpeta node_modules y limpió el caché npm? Pruebe con estos comandos después de eliminar la carpeta node_modules
$ npm limpieza de caché
instalación de $ npm
¿Está utilizando la última versión de NPM/Yarn?
Elija uno, no es bueno tener dos administradores de paquetes en el mismo proyecto.
Elimina package-lock.json si eliges yarn o elimina yarn-lock si eliges npm.
Eliminar carpeta node_modules
Actualice el elegido a la última versión:
npm install --hilo global
instalación de npm --npm global
Instale todos los paquetes usando uno:
hilo
instalar npm
Luego instale lodash.template usando el elegido:
hilo añadir lodash.template
npm instalar lodash.plantilla
Intenta ejecutar tu proyecto de nuevo. Los pasos son simples, pero un proyecto limpio hace la diferencia.
Lo más probable es que una de sus declaraciones require llame a una dependencia (módulo de nodo) que lo enumere como una "dependencia innecesaria". Cada vez que se importa una dependencia, el administrador de paquetes:
Esto es para situaciones en las que un módulo puede configurarse para ejecutarse en varios entornos. El módulo puede importar un submódulo para el entorno de prueba, pero especificarlo como innecesario para los entornos de producción.
Este es el problema con el uso de múltiples administradores de paquetes. El administrador de paquetes está diseñado para garantizar que todos sus paquetes funcionen bien juntos. Sin embargo, si mezcla y combina, a menudo terminarán trabajando uno contra el otro.