instalar - Jquery no funciona en angular 6 Error: ENOENT: no existe tal archivo o directorio, abra ''... / node_modules / jquery / dist / jquery.min.js''
jquery en angular 6 (7)
Estoy en proceso de migrar el proyecto Angular 5 al Angular 6.
Al iniciar la aplicación por
npm start
obteniendo el siguiente error
** Angular Live Development Server is listening on localhost: 9000,
open your browser on http://localhost:9000/ **
91% additional asset processing scripts-webpack-plugin× 「wdm」:
Error: ENOENT: no such file or directory,open''/trunk/node_modules/jquery/dist/jquery.min.js''
Lo intenté
npm install jquery --save
npm install @types/jquery --save
Nada esta funcionando
Revisé la carpeta de los módulos de mi nodo. Puedo ver el archivo jquery.
Pegado mi package.json y angular.json abajo
paquete.json
"dependencies": {
"@angular/animations": "^6.0.0",
"@angular/common": "^6.0.0",
"@angular/compiler": "^6.0.0",
"@angular/core": "^6.0.0",
"@angular/forms": "^6.0.0",
"@angular/http": "^6.0.0",
"@angular/platform-browser": "^6.0.0",
"@angular/platform-browser-dynamic": "^6.0.0",
"@angular/router": "^6.0.0",
"@ng-bootstrap/ng-bootstrap": "^2.0.0",
"bootstrap": "^4.1.1",
"core-js": "^2.5.4",
"font-awesome": "^4.7.0",
"jquery": "^3.3.1",
"@types/jquery": "^3.3.1",
"popper.js": "^1.14.3",
"rxjs": "^6.0.0",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular/compiler-cli": "^6.0.0",
"@angular-devkit/build-angular": "~0.6.0",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.0",
"@angular/language-service": "^6.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
angular.json
"styles": [
"src/styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"./assets/css/font-icon.css",
"../node_modules/font-awesome/css/font-awesome.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/popper.js/dist/umd/popper.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.min.js"
]
Por favor, ayúdame a resolver este problema.
En Angular 6 no necesitas escribir:
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
Puede escribir con ./
como en la parte superior, esto también funcionará, pero de la forma más fácil en el archivo angular.json
:
"node_modules/jquery/dist/jquery.js",
"node_modules/tether/dist/js/tether.js",
"node_modules/bootstrap/dist/js/bootstrap.js"
En mi opinión es mejor y claro.
En tu archivo ''tsconfig.json'', puedes hacer tal vez
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
},
"include": ["node_modules/angular-bootstrap-md/**/*.ts", "src/**/*.ts"],
}
Puedes reemplazar
"include": ["node_modules/angular-bootstrap-md/**/*.ts", "src/**/*.ts"],
a
"include": ["src/**/*.ts","node_modules/angular-bootstrap-md/**/*.ts" ],
Además, en su archivo ''angular.json'', elimino ''../'' delante de node_modules en "styles" y "scripts".
Y copié las líneas de los "scripts" en los "scripts" en la categoría "test"
"test": {
...
"styles": [
"src/styles.css"
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"./assets/css/font-icon.css",
"node_modules/font-awesome/css/font-awesome.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/popper.js/dist/umd/popper.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js"
],
...
Instale @ngBootstrap
con este npm install --save @ng-bootstrap/ng-bootstrap
y npm install jquery --save
o npm install @types/jquery --save
después de la instalación, vaya a angular.json
y busque dónde
"styles": [
{
"input": "styles.css"
}
],
"scripts": []
y cambiarlo a esto:
"styles": [
"styles.css",
"./node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [
"./node_modules/jquery/dist/jquery.min.js",
"./node_modules/bootstrap/dist/js/bootstrap.min.js"
]
y ng server --open
para ejecutar su proyecto
Para Angular 6 el camino es el siguiente:
de :
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
a
"./node_modules/jquery/dist/jquery.js",
"./node_modules/tether/dist/js/tether.js",
"./node_modules/bootstrap/dist/js/bootstrap.js"
Tuve un problema similar ...
El plugin Jquery
no tenía un npm package
listo: (
Así que decidí ponerlo dentro de la carpeta de activos ...
Evidentemente eso no funcionó.
Así que hice algunas pruebas ...
Esto es lo que funcionó para mí:
Navegue a
node_modules/jquery/dist/
- y simplemente inserta el archivo del plugin allí.
Una vez hecho esto, cambia tu archivo angular.json
desde:"scripts": ["node_modules / jquery / dist / jquery.min.js", "../assets/libraries/okshadow.min.js"]
A:
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/jquery/dist/okshadow.min.js"
]
Y tu todo listo!
PS Esto es en Angular 7.0
lugar de Angular 6
Una vez más, el equipo angular hace las cosas más difíciles por razones no reales = (
Tuve este problema y después de buscar en Google infructuosamente, me pregunté si habrían cambiado las rutas relativas de alguna manera, así como cambiar el nombre de ángulo-cli.json.
Un poco más arriba en el archivo encontré la línea:
Sí, sólo cambia:
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
a
"./node_modules/jquery/dist/jquery.js",
"./node_modules/tether/dist/js/tether.js",
"./node_modules/bootstrap/dist/js/bootstrap.js"
../
relativa ../
utilizada para retroceder un directorio. Entonces, primero verifique la ruta del archivo, si no contiene la carpeta raíz del proyecto, está buscando ese archivo jquery en otro lugar que ni siquiera existe.
Si los archivos node_modules y angular.json están en el mismo directorio, no es necesario utilizar la ruta relativa.
En Angular 6, no es necesario utilizar una ruta relativa para ir dentro de node_modules desde angular.json ( ../
o incluso como ./
).