2017-10-14 104 views
0

我的目標是在Urigo的meteor-angular2.0示例中使用ElasticSearch(請參閱下面的鏈接)。Typescript找不到模塊'流星/ easy:搜索'

爲此,我嘗試在我現有的基於https://github.com/Urigo/meteor-angular2.0-socially的項目中使用easysearch:elasticsearch包。

我使用meteor add easysearch:elasticsearch後,如果我嘗試實現它,它總是收到Cannot find module error(serverside/clientside/both - 無關緊要)。 在這裏,在both/collections/cases.collections.ts文件我執行的代碼:

import { MongoObservable } from "meteor-rxjs"; 
import { Meteor } from 'meteor/meteor'; 
import { Index } from 'meteor/easy:search' // gives error 
import { ElasticSearchEngine } from 'meteor/easysearch:elasticsearch' //gives error 

import { Case } from "../models/case.model"; 

export const Cases = new MongoObservable.Collection<Case>("cases"); 

// const CasesIndex = new Index({ 
// collection: Cases, 
// fields: ['name', 'description'], 
// engine: new ElasticSearchEngine({ 
//  body:() => { } // modify the body that's sent when searching 
// }) 

function loggedIn() { 
    return !!Meteor.user(); 
} 

Cases.allow({ 
    insert: loggedIn, 
    update: loggedIn, 
    remove: loggedIn 
}); 

.meteor/packages文件中有如下內容:

# Meteor packages used by this project, one per line. 
# Check this file (and the other files in this directory) into your repository. 
# 
# 'meteor add' and 'meteor remove' will edit this file for you, 
# but you can also edit it by hand. 

[email protected]    # Packages every Meteor app needs to have 
[email protected]  # Packages for a great mobile UX 
[email protected]     # The database Meteor supports right now 
[email protected]   # Reactive variable for tracker 
[email protected]     # Meteor's client-side reactive programming library 

[email protected] # CSS minifier run for production mode 
[email protected] # JS minifier run for production mode 
[email protected]    # ECMAScript 5 compatibility for older browsers. 

angular2-compilers 
practicalmeteor:mocha 
xolvio:cleaner 
hwillson:stub-collections 
dispatch:mocha-phantomjs 
[email protected] 
accounts-password 
anti:fake 
tmeasday:publish-counts 
check 
email 
jalik:ufs 
jalik:ufs-gridfs 
mickaelfm:vermongo 
easysearch:elasticsearch 
easysearch:core 
easy:search 

而且(如果它幫助)在這裏我package.json

{ 
    "name": "a angular2 elasticsearch site", 
    "private": true, 
    "scripts": { 
    "start": "meteor run", 
    "start:prod": "meteor run --production", 
    "build": "meteor build ./build/", 
    "clear": "meteor reset", 
    "meteor:update": "meteor update --all-packages", 
    "test": "meteor test --driver-package practicalmeteor:mocha", 
    "test:ci": "meteor test --once --driver-package dispatch:mocha-phantomjs" 
    }, 
    "devDependencies": { 
    "@types/chai": "3.5.2", 
    "@types/meteor": "^1.4.1", 
    "@types/mocha": "2.2.41", 
    "chai": "3.5.0", 
    "chai-spies": "0.7.1", 
    "meteor-node-stubs": "0.2.4" 
    }, 
    "dependencies": { 
    "@angular/animations": "^4.4.3", 
    "@angular/common": "^4.4.3", 
    "@angular/compiler": "^4.4.3", 
    "@angular/core": "^4.4.3", 
    "@angular/forms": "^4.4.3", 
    "@angular/http": "^4.4.3", 
    "@angular/material": "2.0.0-beta.8", 
    "@angular/platform-browser": "^4.4.3", 
    "@angular/platform-browser-dynamic": "^4.4.3", 
    "@angular/router": "^4.4.3", 
    "@types/node": "^7.0.22", 
    "@types/underscore": "^1.8.1", 
    "angular2-file-drop": "^0.2.0", 
    "angular2-google-maps": "0.17.0", 
    "angular2-meteor": "0.7.1", 
    "angular2-meteor-accounts-ui": "1.0.0", 
    "angular2-meteor-polyfills": "0.2.0", 
    "angular2-meteor-tests-polyfills": "0.0.2", 
    "babel-runtime": "6.23.0", 
    "bcrypt": "=1.0.2", 
    "gm": "^1.23.0", 
    "hammerjs": "^2.0.8", 
    "meteor-node-stubs": "0.2.11", 
    "meteor-rxjs": "0.4.7", 
    "meteor-typings": "1.3.1", 
    "ng2-drag-drop": "^2.0.1", 
    "ng2-pagination": "^2.0.1", 
    "reflect-metadata": "0.1.10", 
    "ng2-cytoscape": "0.4.0", 
    "rxjs": "5.4.0", 
    "zone.js": "0.8.11" 
    } 
} 

仍同樣的錯誤 - 我已經添加了包meteor add easy:search,並通過重建整個應用程序3210。

此外,我將導入轉移到服務器端 - 只是爲了確保沒有問題,但我仍然在Atom編輯器和Chrome控制檯中得到錯誤。

難道是因爲我沒有使用Blaze組件而產生一些問題嗎?

回答

0

你忘了安裝easy:search包裝本身。

cd /path/to/project 
meteor add easy:search 
+0

仍然是同樣的錯誤 - 我已經添加了流星添加包簡單:通過npm run start搜索和重建整個應用程序。 –

+0

@SaschaN。你能澄清那個錯誤嗎? – Styx

+0

如果我另外添加'npm-debug-log'會有幫助嗎? –

0

我想通了 - 什麼是安裝非常好,但編譯器,編輯器(原子與打字稿封裝)和控制檯給了我一個錯誤,因爲缺少分型的。

剛剛將以下錯誤的最小類型定義添加到typings.d.ts以成功連接到正在運行的elasticsearch服務器。

declare module 'meteor/easysearch:core' { 
    import { Mongo } from "meteor/mongo"; 

    interface config { 
    collection: any, 
    fields: string[], 
    engine: any 
    } 

    class Index { 
    constructor(config: config); 
    search(searchDefinition: string, options?: object): Mongo.Cursor<any>; 
    } 
} 


declare module 'meteor/easysearch:elasticsearch' { 
    interface params { 
    body: any 
    } 

    class ElasticSearchEngine { 
    constructor(obj: params); 
    } 
}