2016-04-21 132 views
0

我已經下載了令人驚歎的iLib Javascript I18N庫的當前版本(11.0),用於解析國際地址。不幸的是,我不能使用它。該文檔說加載iliball.js,這不在Github上的分發或文件列表中。試圖JS /組裝/ ILIB-全compiled.js相反,我能夠:與iLib苦苦搏鬥

% js 
> var module = require("./ilib-full-compiled.js") 
> module.ilib.getVersion() 
'11.0.006' 

,但地址不是在模塊中定義:

> module.Address("1234 Main Street\nDenver CO") 
TypeError: Object #<Object> has no method 'Address' 
    at repl:1:10 
    at REPLServer.self.eval (repl.js:110:21) 
    at Interface.<anonymous> (repl.js:239:12) 
    at Interface.EventEmitter.emit (events.js:95:17) 
    at Interface._onLine (readline.js:202:10) 
    at Interface._line (readline.js:531:8) 
    at Interface._ttyWrite (readline.js:760:14) 
    at ReadStream.onkeypress (readline.js:99:10) 
    at ReadStream.EventEmitter.emit (events.js:98:17) 
    at emitKey (readline.js:1095:12) 

,類似的還有module.ilib 。地址。

此外,我找不到允許我創建自己的彙編庫的「jsa」工具。此外,嘗試從iLib源碼構建會產生大量錯誤。

它只是不能很難使用這個。我在這裏錯過了什麼? (我沒有聲望點來創建一個「ilib」標籤,所以我希望這引起了與該項目有關的人的注意)。

+2

我只是做了'npm install -g ilib',然後當我需要(「ilib」)'我得到一個對象*確實*有一個'Address'功能就可以了。 – Pointy

+0

謝謝。我試過了,但是這樣做後,require(「ilib」)告訴我它找不到該模塊。 'npm'將模塊安裝到/ usr/local/lib/node_modules中。有什麼地方需要設置路徑變量? *編輯*:發現有。我原以爲npm會將它安裝在nodejs可以找到的地方!謝謝您的幫助。 –

回答

0

我不確定這是否適用於Go/Otto,但在nodejs上,您可以通過使用require來訪問它的技巧來獲取ilib中的其中一個類。基本上,加上「ILIB/lib目錄/」 +類名來得到它:

> var ilib = require("ilib"); 
> var Address = require("ilib/lib/Address"); 
> var add = new Address("1234 Main Street, Denver CO 80202"); 
> add 
{ sync: true, 
    loadParams: {}, 
    locale: 
    { language: 'en', 
    region: 'US', 
    script: undefined, 
    variant: undefined, 
    spec: 'en-US' }, 
    lines: undefined, 
    country: undefined, 
    countryCode: 'US', 
    info: 
    { formats: 
     { default: '{streetAddress}\n{locality} {region} {postalCode}\n{country}', 
     nocountry: '{streetAddress}\n{locality} {region} {postalCode}' }, 
    startAt: 'end', 
    fields: [ [Object], [Object], [Object] ] }, 
    compare: [ [Function: Function] ], 
    postalCode: '80202', 
    region: 'CO', 
    locality: 'Denver', 
    streetAddress: '1234 Main Street' } 

或者,對象在需要將包含Address類返回,但你應該用「新」與它來創建一個新的實例:

var module = require("ilib"); 
new module.Address("1234 Main Street\nDenver CO"); 

產生的實例上有幾個方法,以及解析特性。

在ILIB維基的更多細節:https://sourceforge.net/p/i18nlib/wiki/New%20Modularization%20Support/

至於NPM,當你在本地安裝的全球性,相反,它會發現node_modules無需設置路徑。

對於組裝自己ILIB,你需要首先安裝幾件事情:

  • 甲骨文的Java JDK 1.7或更高版本
  • Apache Ant的
  • 的NodeJS 0.10
  • NPM

一旦他們都在路上,滾動你自己的ilib版本應該會更順利。 Jsa是一個基於java的工具,它的源代碼在ilib中。螞蟻首先編譯它,然後用它來組裝ilib。 (有一天我會爲nodejs重寫它)。