2016-09-25 32 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:我只給第一個重複,你知道我只能給一個。但第二個有一些有趣的評論也可以幫助你。 –