He visto algunas publicaciones diferentes sobre no poder encontrar archivos locales para abrirlos, ya sean imágenes o archivos de datos, pero ninguna de las soluciones me ha funcionado. Supongo que faltaría alguna configuración.

El archivo que estoy buscando está en una carpeta llamada "datos" en el mismo nivel que mis archivos app.html y app.ts.

Esto es lo que tengo en app.html, PS. También estoy usando Ionic2:

<ion-menu (click)='getDepartments()' side='right' type='overlay' [content]="content">

Y en el archivo app.ts tengo:

getDepartments() {
    this.http.get('/data/data.json')
        .map(res => res.json())
        .subscribe(
            data => this.departments = data,
            err => console.log(err),
            () => console.log('Random Quote Complete')
        );
}

He intentado:

./data/data.json

data/data.json

app/data/data.json

Y cualquier otro camino. Y todos devuelven un error de archivo 404 no encontrado. Esto parece como dolores de crecimiento al familiarizarse con Angular 2. Gracias de antemano

9
discodane 13 may. 2016 a las 18:34

4 respuestas

La mejor respuesta

Las respuestas anteriores decían ponerlo directamente en la carpeta www para que esté disponible para la aplicación. Diría que esta no es la mejor solución, ya que la carpeta www se excluye usando .gitignore en un proyecto Ionic2 recién creado.

En su lugar, póngalo dentro de la carpeta src/assets y también estará disponible en la aplicación y NO se excluirá del repositorio de git (por defecto). Luego puede acceder usando: this.http.get('assets/file.json');

Puede modificar el archivo .gitignore, pero puede incluir otros archivos innecesarios.

22
Gabe O'Leary 2 mar. 2017 a las 18:55

¿Su servidor puede ver la carpeta '/ data'? Asegúrese de que su archivo JSON esté ubicado en el mismo directorio que sus archivos públicos / estáticos.

-2
Mike Zavarello 14 may. 2016 a las 22:41

Para cualquier persona que esté interesada en resolver el mismo problema. Si está utilizando Angular CLI y desea que se pueda acceder a cualquier carpeta a través de http como en este caso la carpeta "data".

Vaya a Angular-CLI.JSON y luego agregue "el nombre de la carpeta" que es "datos" en aplicaciones -> activos

"apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico",
        "data"
      ],
2
Khalid Aljaghthami 6 dic. 2017 a las 19:03

No me di cuenta de que, trabajando con Ionic, compila todo en la carpeta de la aplicación y lo coloca en la carpeta www / build. Por lo tanto, cuando puse una ruta en la carpeta de la aplicación sin compilar, no me di cuenta de que el archivo en el que estoy poniendo la ruta no está donde creo que está.

Entonces hice dos cosas, cada una funcionó. Puse los archivos directamente en el archivo www (no los coloque en el archivo de compilación, ya que se eliminarán cada vez que ejecute el servicio iónico) y luego arregle la ruta en consecuencia. O simplemente arregle la ruta sabiendo que cuando busca un archivo en su app.ts, primero debe salir de www / build.

2
discodane 24 jun. 2016 a las 19:13