2017-02-04 6 views
0

Я использую Angular 2 + Angular CLI для создания приложения. Я нашел эту классную библиотеку «csvtojson», которая делает именно то, что я хотел на основе демонстрации . Поэтому я пытаюсь включить ее в свой проект. Тем не менее, мой первый вопрос: можно ли включить эту библиотеку в мой проект, поскольку я не вижу, чтобы он был построен для Angular 2? Если нет ... это значит, что я могу просто просто отвести взгляд и почувствовать грусть?Использование внешней библиотеки для Angular 2

Если да ... как бы я его реализую. То, что я сделал ниже не работает

1. npm i --save csvtojson 
2. inside app.module.ts 
    import { csvtojson } from 'csvtojson' 
    providers: [ 
     {{...}} 
     csvtojson //test 
    ], 

3. app.component.ts 
    import { csvtojson } from 'csvtojson' 
    constructor(private csvToJson: csvtojson) { } 
    this.csvToJson.csv({ noheader: true }) 
     .fromString(data) 
     .on('csv', (csvRow) => { // this func will be called 3 times 
      console.log('afasf',csvRow) // => [1,2,3] , [4,5,6] , [7,8,9] 
     }) 
     .on('done',() => { 
      //parsing finished 
     }) 

И я получаю эту ошибку

ERROR in ./~/csvtojson/libs/core/workerMgr.js Module not found: Error: Can't resolve 'child_process' in '/Users/james/Desktop/web-app/nod e_modules/csvtojson/libs/core'

ответ

0

, потому что это ЛИЭС нужно запустить на сервере узла, вы не можете иметь child_process в браузере.

для браузера, это решение может помочь вам https://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm

+0

значит, что эта библиотека просто вне моей досягаемости? – user172902

+0

для браузера вы можете использовать это решение https://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm –

0

Нет необходимости для внешней библиотеки.

Здесь работает Plunker для csvTOjson

import {Component, NgModule} from '@angular/core' 
    import {BrowserModule} from '@angular/platform-browser' 

    import { Component } from '@angular/core'; 

    @Component({ 
     selector: 'my-app', 
     templateUrl: './app.html' 
    }) 
    export class AppComponent { 
     title = 'csvTOjson works!'; 
     text : any ; 
     JSONData : any; 
     csvJSON(csvText) { 
     var lines = csvText.split("\n"); 

     var result = []; 

     var headers = lines[0].split(","); 
     console.log(headers); 
     for (var i = 1; i < lines.length-1; i++) { 

      var obj = {}; 
      var currentline = lines[i].split(","); 

      for (var j = 0; j < headers.length; j++) { 
       obj[headers[j]] = currentline[j]; 
      } 

      result.push(obj); 

     } 

     //return result; //JavaScript object 
     console.log(JSON.stringify(result)); //JSON 
     this.JSONData = JSON.stringify(result); 
    } 

    convertFile(input) { 

    const reader = new FileReader(); 
    reader.readAsText(input.files[0]); 
    reader.onload =() => { 
     let text = reader.result; 
     this.text = text; 
     console.log(text); 
     this.csvJSON(text); 
    }; 

    } 
    } 


    @NgModule({ 
     imports: [ BrowserModule ], 
     declarations: [ AppComponent ], 
     bootstrap: [ AppComponent ] 
    }) 
    export class AppModule {} 
Смежные вопросы