【发布时间】:2017-06-07 00:38:52
【问题描述】:
我是 Angular 的新手,刚刚开始了解它的工作原理。互联网,请温柔一点……
我已经通过英雄之旅完成了 Angular2 5 分钟快速入门,并且可以正常运行。现在我正在尝试连接到我的本地 MS SQL 服务器,因为我有一个基于 SQL 的项目,其中 Angular2 是所需的平台。几天来,我一直在努力让 Sequelize 工作,真的需要一些帮助。
到目前为止,我根据阅读的不同内容做了什么:
- 使用npm安装sequelize,验证sequelize和lodash、bluebird、validator的依赖都存在于node_modules下
- 从GitHub上的DefinitelyTyped项目下载bluebird.d.ts、lodash.d.ts、sequelize.d.ts和validator.d.ts并将它们放在我的typings文件夹中
- 在 tsConfig.json 中,我将 compilerOptions --> 目标从 es5 更改为 es6
- 创建了一个简单的 db.component.ts 文件(见下文)
- 更新 app.component.ts 以导入 db.component 并为其添加路由
此时出现了简单页面,但我无法弄清楚如何让 Sequelize 正常工作。
我看到的脚本错误(基于使用 Visual Studio Code 作为我的编辑器):
- 当我打开 sequelize.d.ts 时,'declare module "sequelize" {' 行出现错误,指出“环境模块不能嵌套其他模块”
- 当我打开 lodash.d.ts 时,第 239 行和第 240 行(下划线)出现错误,指出“重复标识符 '_'”
我已经尝试了许多不同的方法(猜测)来了解如何让 sequelize 连接到我的数据库,但就是无法正常工作。我知道我需要(两者?)在 db.component.ts 文件中导入和/或需要,但最终只会在 IDE 中作为错误语法或在浏览器 (Chrome) 中出现错误。
我确实明白,从长远来看,我在这里测试的路由/配置/等不会是“正确”的方法,但我只需要通过基本证明 -概念上我可以在重新设计数据库之前对它做一些事情(例如 - 我可以连接到数据库并查询一个表)
app.component.ts
import { Component } from 'angular2/core';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router';
import { DashboardComponent } from './dashboard.component';
import { HeroService } from './hero.service';
import { HeroesComponent } from './heroes.component';
import { HeroDetailComponent } from './hero-detail.component';
import { dbComponent } from './db.component';
@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<nav>
<a [routerLink]="['Dashboard']">Dashboard</a>
<a [routerLink]="['Heroes']">Heroes</a>
</nav>
<router-outlet></router-outlet>
`,
styleUrls: ['app/app.component.css']
directives: [ROUTER_DIRECTIVES],
providers: [
ROUTER_PROVIDERS,
HeroService
]
})
@RouteConfig([
{
path: '/dashboard',
name: 'Dashboard',
component: DashboardComponent,
useAsDefault: true
},
{
path: '/heroes',
name: 'Heroes',
component: HeroesComponent
},
{
path: '/detail/:id',
name: 'HeroDetail',
component: HeroDetailComponent
},
{
path: '/sql',
name: 'SqlTest',
component: dbComponent
}
])
export class AppComponent {
title = 'Sample App';
}
db.component.ts
/// <reference path="../typings/sequelize.d.ts" />
import { Component, OnInit } from 'angular2/core';
import Sequelize = require('sequelize'); <-- I dont know if this is doing anything
//- This just errors out with require not being found (tds@latest installed)
//var Sequelize = require("sequelize");
//- I know this goes somewhere, but I have no idea where
//var sql = new Sequelize('dbName', 'uName', 'pw', {
// host: "127.0.0.1",
// dialect: 'mssql',
// port: 1433 <-- SqlExpress
//});
@Component({
selector: 'my-sql',
template:`
<h1>SQL Test</h1>
`
})
export class dbComponent implements OnInit {
constructor(
) { }
auth() {
console.log('auth');
//sql.authenticate().then(function(errors) { console.log(errors) });
}
ngOnInit() {
console.log('onInit');
this.auth();
}
}
我的 console.log 消息即将出现,所以我相信我的核心功能基本上可以工作,但我不知道我需要做什么才能让 Sequelize 正常工作。
我缺少一块拼图,对此我束手无策。在此先感谢您的任何指导...
【问题讨论】:
-
请明确提供错误
-
@PatrickMotard:我在“脚本错误”中列出的那些可能是问题的根源,但我不确定如何处理它们,或者因为它们只显示在 IDE 中,如果它们是“真正的”错误。 db.components.ts sn-p 中提到的“require”错误在浏览器中显示为“require is not defined”。
标签: angular sequelize.js