2016-10-22 3 views
1

Helloes, У меня есть модуль не найден ошибок при попытке использовать драйвер Neo4j в моем приложении с угловым 2 CLI.Ошибки при импорте Neo4j Драйвер Javascript для Angular 2 CLI

Возможно, у меня что-то не хватает, чтобы импортировать его.

  • Я установил его: нг установить Neo4j-драйвера
  • В моих service.ts: import 'neo4j-driver/lib/browser/neo4j-web';
  • Попытка назвать этот пример кода в службе:

    getFromDB(): void { 
        var neo4j = require('neo4j-driver').v1; 
        var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "pisikopat")); 
    
        // Create a session to run Cypher statements in. 
        // Note: Always make sure to close sessions when you are done using them! 
        var session = driver.session(); 
    
        // Run a Cypher statement, reading the result in a streaming manner as records arrive: 
        session 
        .run("OPTIONAL MATCH (source)-[r]-(target) WHERE r is not null RETURN (source)") 
        .subscribe({ 
         onNext: function (record) { 
         console.log(record._fields); 
         }, 
         onCompleted: function() { 
         // Completed! 
         session.close(); 
         }, 
         onError: function (error) { 
         console.log(error); 
         } 
        }); 
    } 
    

Когда я ng подавать мое приложение, я получаю следующие ошибки:

ERROR in ./~/neo4j-driver/lib/v1/internal/ch-node.js 
Module not found: Error: Can't resolve 'net' in 'E:\emek\node_modules\neo4j-driver\lib\v1\internal' 
@ ./~/neo4j-driver/lib/v1/internal/ch-node.js 32:11-25 364:2-24 
@ ./~/neo4j-driver/lib/v1/internal/connector.js 
@ ./~/neo4j-driver/lib/v1/driver.js 
@ ./~/neo4j-driver/lib/v1/index.js 
@ ./~/neo4j-driver/lib/index.js 
@ ./src/app/services/heroes.service.ts 
@ ./src/app/app.component.ts 
@ ./src/app/index.ts 
@ ./src/main.ts 
@ multi main 

ERROR in ./~/neo4j-driver/lib/v1/internal/ch-node.js 
Module not found: Error: Can't resolve 'tls' in 'E:\emek\node_modules\neo4j-driver\lib\v1\internal' 
@ ./~/neo4j-driver/lib/v1/internal/ch-node.js 36:11-25 
@ ./~/neo4j-driver/lib/v1/internal/connector.js 
@ ./~/neo4j-driver/lib/v1/driver.js 
@ ./~/neo4j-driver/lib/v1/index.js 
@ ./~/neo4j-driver/lib/index.js 
@ ./src/app/services/heroes.service.ts 
@ ./src/app/app.component.ts 
@ ./src/app/index.ts 
@ ./src/main.ts 
@ multi main 

ERROR in ./~/neo4j-driver/lib/v1/internal/ch-node.js 
Module not found: Error: Can't resolve 'readline' in 'E:\emek\node_modules\neo4j-driver\lib\v1\internal' 
@ ./~/neo4j-driver/lib/v1/internal/ch-node.js 92:2-21 
@ ./~/neo4j-driver/lib/v1/internal/connector.js 
@ ./~/neo4j-driver/lib/v1/driver.js 
@ ./~/neo4j-driver/lib/v1/index.js 
@ ./~/neo4j-driver/lib/index.js 
@ ./src/app/services/heroes.service.ts 
@ ./src/app/app.component.ts 
@ ./src/app/index.ts 
@ ./src/main.ts 
@ multi main 

угловой кли: 1.0.0-beta.15 узел: 4.5.0 ОС: win32 x64

ответ

1

Это может быть немного поздно, но здесь это в любом случае.

Во-первых, вам необходимо изменить способ импорта и назначения драйвера. Изменение:

import 'neo4j-driver/lib/browser/neo4j-web'; 

To:

import * as neo4j_driver from 'neo4j-driver/lib/browser/neo4j-web.min.js'; 

Затем измените узел ищет синтаксис:

var neo4j = require('neo4j-driver').v1; 

To:

const neo4j = neo4j_driver.v1; 

Это позволит избавиться от ошибок, которые вы иметь.

Тогда вы действительно можете получить ошибки для того, чтобы не назначать порт в вашем uri. Чтобы получить правильный порт (7474 не работал для меня), я запустил БД и пошел в браузер Neo4j на localhost: 7474. Затем вам нужно посмотреть вниз по странице, где говорится: «Вы подключены как пользователь neo4j к серверу bolt: // localhost: 7687« Я не уверен, что это по умолчанию или если оно назначено, но в любом случае.

Я использовал этот порт в своем uri, и теперь все работает внутри Angular (хотя я не могу заставить это работать, если вы используете удаленное соединение, например с Graphene, и единственная документация, которую я могу найти, не применима к JS Водитель).

Вот мое полное решение:

import {Component, OnInit} from '@angular/core'; 
import * as neo4j_driver from 'neo4j-driver/lib/browser/neo4j-web.min.js'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent implements OnInit { 
    title = 'app works!'; 

    constructor() { 
    } 

    ngOnInit() { 
    const neo4j = neo4j_driver.v1; 
    const uri = 'bolt://localhost:7687'; 
    const user = 'neo4j'; 
    const password = '<your password>'; 
    const driver = neo4j.driver(uri, neo4j.auth.basic(user, password), {maxTransactionRetryTime: 15000}); 

    // Register a callback to know if driver creation was successful: 
    driver.onCompleted = function() { 
    // proceed with using the driver, it was successfully instantiated 
    }; 
    // Register a callback to know if driver creation failed. 
    // This could happen due to wrong credentials or database unavailability: 
    driver.onError = function (error) { 
     console.log('Driver instantiation failed', error); 
    }; 

    const session = driver.session(); 
    const result = session.run('MATCH (a:Person) RETURN a.name ORDER BY a.name'); 
    const people = []; 

    result.subscribe({ 
     onNext: record => { 
     const name = record.get(0); 
     codes.push(name); 
     }, 
     onCompleted:() => { 
     session.close(); 
     console.log(people); 
     }, 
     onError: error => { 
     console.log(error); 
     } 
    }); 
    } 
} 
Смежные вопросы