2017-01-17 5 views
1

cdnを使ってjson検証ライブラリにアクセスしたいのですが、CDNで最も近い利用可能なサーバからファイルを取得するので少し早くなるはずです。CDNを使用する際にタイピングが働くようにします

これは、JSONの検証ライブラリです:

https://github.com/epoberezkin/ajv#using-in-browser

それはこのCNDに私を指示します。

https://cdnjs.com/libraries/ajv

だから私は私のhtmlでいることを、次のとおりです

<html> 
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/4.10.4/ajv.min.js" integrity="sha256-LtA3VfycAam30/5e2Fq1f2tg8eIiFMOVWp1NDd6jmUU=" crossorigin="anonymous"></script> 
</head> 

今の入力...私は走ったこの:NPMタイプ/ AJV @ --save-devのをインストールし、それが

node_modules/@types/ajv/package.jsonインストール:

{ 
    "_args": [ 
    [ 
     { 
     "raw": "@types/ajv", 
     "scope": "@types", 
     "escapedName": "@types%2fajv", 
     "name": "@types/ajv", 
     "rawSpec": "", 
     "spec": "latest", 
     "type": "tag" 
     }, 
     "C:\\Users\\si556577\\Documents\\SSWebApp\\app\\Iag.DI.Web.SupplierApp" 
    ] 
    ], 
    "_from": "@types/[email protected]", 
    "_id": "@types/[email protected]", 
    "_inCache": true, 
    "_installable": true, 
    "_location": "/@types/ajv", 
    "_npmOperationalInternal": { 
    "host": "packages-12-west.internal.npmjs.com", 
    "tmp": "tmp/ajv-1.0.0.tgz_1482502603556_0.6872997884638608" 
    }, 
    "_npmUser": { 
    "name": "types", 
    "email": "[email protected]" 
    }, 
    "_phantomChildren": {}, 
    "_requested": { 
    "raw": "@types/ajv", 
    "scope": "@types", 
    "escapedName": "@types%2fajv", 
    "name": "@types/ajv", 
    "rawSpec": "", 
    "spec": "latest", 
    "type": "tag" 
    }, 
    "_requiredBy": [ 
    "#DEV:/", 
    "#USER" 
    ], 
    "_resolved": "https://registry.npmjs.org/@types/ajv/-/ajv-1.0.0.tgz", 
    "_shasum": "4fb2440742f2f6c30e7fb0797b839fc6f696682a", 
    "_shrinkwrap": null, 
    "_spec": "@types/ajv", 
    "_where": "C:\\Users\\si556577\\Documents\\SSWebApp\\app\\Iag.DI.Web.SupplierApp", 
    "author": "", 
    "bugs": { 
    "url": "https://github.com/epoberezkin/ajv/issues" 
    }, 
    "dependencies": { 
    "ajv": "*" 
    }, 
    "deprecated": "This is a stub types definition for ajv (https://github.com/epoberezkin/ajv). ajv provides its own type definitions, so you don't need @types/ajv installed!", 
    "description": "Stub TypeScript definitions entry for ajv, which provides its own types definitions", 
    "devDependencies": {}, 
    "directories": {}, 
    "dist": { 
    "shasum": "4fb2440742f2f6c30e7fb0797b839fc6f696682a", 
    "tarball": "https://registry.npmjs.org/@types/ajv/-/ajv-1.0.0.tgz" 
    }, 
    "homepage": "https://github.com/epoberezkin/ajv#readme", 
    "license": "MIT", 
    "main": "", 
    "maintainers": [ 
    { 
     "name": "types", 
     "email": "[email protected]" 
    } 
    ], 
    "name": "@types/ajv", 
    "optionalDependencies": {}, 
    "readme": "ERROR: No README data found!", 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/epoberezkin/ajv.git" 
    }, 
    "scripts": {}, 
    "typings": null, 
    "version": "1.0.0" 
} 

をして、それはまた、package.jsonにこれを追加しました:

しかし私は、コンパイル時に電子を得ている対コードで、

validateJSONSchema(json) { 
    var ajv = new Ajv(); 
    var valid = ajv.validate(this.schema, json); 
    if (!valid) { 
     console.log(ajv.errors); 
     return false; 
    } else { 
     return true; 
    } 
} 

コードは動作します。私はこのようにそれを使用するコードで

"devDependencies": { 
    "@types/ajv": "^1.0.0", 

エラー:名前「Ajv」を見つけることができません

どのように入力しても問題ありませんか? cdnを使用するのではなく、パッケージをローカルにインストールするときに入力を使用したことがあります。 cdnを使用しているときに入力することもできますか?

答えて

1

それは@types/ajvが廃止されajvpackage.jsonファイルに記録だとタイピングがパッケージiteselfに含まれています。しかし

This is a stub types definition for ajv (https://github.com/epoberezkin/ajv). ajv provides its own type definitions, so you don't need @types/ajv installed!

、タイピングは、自身が使用されることが意図されているパッケージに含まれていますこのように:import文が使用されている場合を除き

import * as Ajv from "ajv"; 
let ajv = new Ajv(...); 

だから、活字体は、タイピングと幸せになるだろうされていません。

これは、CDNを使用する場合、モジュールバンドラを設定する必要があることを意味します。 CDN <script>を含めるには十分ではなく、Ajvをグローバルとして利用することはできません。

どのようにするかは、使用しているバンドラによって異なります。

関連する問題