2016-09-25 84 views
2

我是MEAN的新手,想寻求您的帮助。如何在angular2/browser上使用猫鼬

因为我在服务器端使用Mongoose并有很多模式,所以我想在表单输入中重用Angular2浏览器端的模式。由于猫鼬现在是同构的,我认为它应该是可行的。如果可能的话,我想用Mongoose/Angular2在客户端使用模式,文档和验证。我不会连接到浏览器的数据库。

问题1:我怎么能在大衣边使用猫鼬?

我浏览周围,正在想这种方法可能不正确。

  1. NPM安装猫鼬--save
  2. 分型安装--global --save DT〜猫鼬(​​又mpromise,猫鼬,承诺,mongodb的,节点)
  3. 上app.module.ts,进口*来自'猫鼬'的猫鼬;
  4. 复制这些.... \分型\全局*到.... \ node_modules(不知道我需要这一步,但只是尝试一下)

当我做 'NG S',我有这些错误。

问题2:如何解决下面的这些错误?我也尝试npm安装 - 保存事件,npm安装 - 保存流并打印它们。

错误在[默认] d:\ MEAN \项目\ fhir \ fhirapp \ node_modules \ MongoDB的\ index.d.ts:4:29 找不到模块 '事件'。

ERROR in [default] D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongodb \ index.d.ts:102:18 找不到名称'Buffer'。

ERROR in [default] D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongodb \ index.d.ts:1127:44 找不到命名空间'NodeJS'。

ERROR in [default] D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongoose \ index.d.ts:6:26 无法找到模块'流'。

ERROR in [default] D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongoose \ index.d.ts:13:29 找不到名称'global'。

我typings.json

{ 
    "globalDependencies": { 
    "mongodb": "registry:dt/mongodb#2.1.0+20160602142941", 
    "mongoose": "registry:dt/mongoose#4.5.9+20160922172925", 
    "mongoose-promise": "registry:dt/mongoose-promise#4.5.4+20160822161941", 
    "mpromise": "registry:dt/mpromise#0.5.4+20160316155526", 
    "node": "registry:dt/node#6.0.0+20160923124626" 
    } 
} 

您的帮助是高度赞赏。 在此先感谢。

+0

您不需要将'typings'文件夹中的任何内容复制到'node_modules'。 – WiredPrairie

+0

嗨WiredPrairie,thx的确认。我正在考虑将相应的index.d.ts复制到每个node_modules/module_name。 – Autorun

回答

3

随着TypeScript 2.0.3的安装(如果你正在做Angular 2。0+,你应该使用),我用下面的package.json

npm install mongoose core-js --save 
npm install @types/mongoose @types/core-js @types/node typescript --save-dev 

{ 
    "name": "stackoverflow_mongoose", 
    "version": "1.0.0", 
    "description": "test", 
    "main": "index.js", 
    "license": "ISC", 
    "dependencies": { 
    "core-js": "^2.4.1", 
    "mongoose": "^4.6.1" 
    }, 
    "devDependencies": { 
    "@types/core-js": "^0.9.34", 
    "@types/mongoose": "^4.5.36", 
    "@types/node": "^6.0.41", 
    "typescript": "^2.0.3" 
    } 
} 

我创建了一个tsconfig.json文件:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es5", 
     "noImplicitAny": false, 
     "sourceMap": false 
    }, 
    "exclude": [ 
     "node_modules" 
    ] 
} 

而且一个示例文件,index.ts

import * as mongoose from "mongoose"; 

mongoose.connect("sample"); 

有没有编译错误。您不需要再使用typings。相反,您可以使用@types

+0

嗨WiredPrairie, – Autorun

+0

嗨WiredPrairie, 非常感谢! 添加这些建议的模块和@type后,问题就解决了。然而,我并没有npm导致很多错误的@ type/core-js,例如[default] D:\ ... \ node_modules \ typescript \ lib \ lib.es2015.core.d.ts中的错误: 17:13 重复标识符'PropertyKey'。 ERROR in [default] D:\ .. \ node_modules \ @types \ core-js \ index.d.ts:21:13重复的标识符'PropertyKey'。 – Autorun

+0

不知道为什么你删除你的问题,如果你给我机会,我会寻找别的东西。我知道问题是因为unicode排序不同。试着看这篇文章。 https://support.microsoft.com/en-us/kb/322112。 PD:我只给第一个重复,你知道我只能给一个。但第二个有一些有趣的评论也可以帮助你。 –