2017-09-17 1 views
0

Ich habe eine eckige 2/4 App, die ich mit angle-cli (v 1.3.2) eingerichtet habe. Ich habe einen MAMP mysql Server, den ich in Sequel Pro sehen kann.Modul nicht gefunden Fehler mit Sequelize mit angular-cli

Um mit Sequelize verbinden, folgte ich der getting started docs. (Und ich habe @types/sequelize installiert.) Aber ich bekomme Module not found: Error: Can't resolve... für die mysql und postgres Dialekte.

Hier ist mein Code:

import { Injectable } from '@angular/core'; 
import * as Sequelize from 'sequelize'; 

@Injectable() 
export class DataService{ 

    public sequelize: Sequelize.Sequelize; 

    constructor(){ 
    this.sequelize = new Sequelize('local-db', 'username', 'password', { 
     host: 'localhost', 
     dialect: 'mysql', 
     pool: { 
     max: 5, 
     min: 0, 
     idle: 10000 
     } 
    }); 
    this.init(); 
    } 

    public init(){ 
    this.sequelize.authenticate() 
     .then(() => { 
     console.log('Connection has been established successfully.'); 
     }) 
     .catch(err => { 
     console.log('Unable to connect to the database:'); 
     console.error(err); 
     }); 
    }; 
} 

Vielleicht webpack auf einige faul geladenen Ressourcen von 3rd-Party-Bibliotheken ersticken könnte (nur raten von this issue)? Also, habe ich sequelize als externe Bibliothek in meiner .angular-cli.json:

"scripts": [ 
    "../node_modules/sequelize/lib/sequelize.js" 
] 

Aber ich bin die gleichen Fehler immer:

ERROR in ./node_modules/sequelize/lib/dialects/mssql/query.js 
Module not found: Error: Can't resolve 'tedious' in '[MYAPPROOT]/node_modules/sequelize/lib/dialects/mssql' 
resolve 'tedious' in '[MYAPPROOT]/node_modules/sequelize/lib/dialects/mssql' 
    Parsed request is a module 
    using description file: [MYAPPROOT]/node_modules/sequelize/package.json (relative path: ./lib/dialects/mssql) 
    Field 'browser' doesn't contain a valid alias configuration 
    after using description file: [MYAPPROOT]/node_modules/sequelize/package.json (relative path: ./lib/dialects/mssql) 
    resolve as module 
     [MYAPPROOT]/node_modules/sequelize/lib/dialects/mssql/node_modules doesn't exist or is not a directory 
     [MYAPPROOT]/node_modules/sequelize/lib/dialects/node_modules doesn't exist or is not a directory 
     [MYAPPROOT]/node_modules/sequelize/lib/node_modules doesn't exist or is not a directory 
     [MYAPPROOT]/node_modules/node_modules doesn't exist or is not a directory 
yada 
yada 
yada 

Ich sehe in dem sequelize Anschluss-Manager. js, das Finden von Modulen könnte ein Problem sein:

if (err.code === 'MODULE_NOT_FOUND') { 
    throw new Error('Please install \'' + (sequelize.config.dialectModulePath || 'pg') + '\' module manually'); 
    } 

Aber ich habe mysql2 installiert, pro begonnen Richtungen.

Was fehlt also? Jede Hilfe mit diesem Geheimnis würde sehr geschätzt werden!

Antwort

1

Die "Erste Schritte" -Dokumente sagen dies nicht explizit, aber sie beziehen sich auf eine node.js-Anwendung, keine eckige. Sie möchten mit Sicherheit keine Verbindung zu SQL aus Ihrer eckigen Anwendung herstellen. Sie sollten eine "backend" node.js-Anwendung erstellen, die eine Verbindung zu Ihrer Datenbank herstellt und mit dieser Anwendung von angular aus über eine Art API kommuniziert.

Technisch ist es möglich, mysql von Winkel zuzugreifen, aber das würde erfordern:

  1. in der Winkel Anwendung Ihre Anmeldedaten Einlochen. Jeder , die Ihre Anwendung wäre in der Lage, sie
  2. sehen Wenn Sie „localhost“ in für die Verbindung setzen, das ist die localhost Ihrer Browser das heißt, es konnte nur funktionieren, wenn Sie Ihren Browser und Datenbank auf der gleichen Lauf Maschine.
Verwandte Themen