1

コンパイラを使用して、ngc事前に Angular 2 アプリをコンパイルしています。アプリの一部で、デフォルトでは TypeScript でカバーされていない Notification API を使用しています。を実行するngcと、次のように不平を言います。

c:\xampp\htdocs\project\_dev>"node_modules/.bin/ngc" -p tsconfig.aot.json
Error: Error at c:/xampp/htdocs/project/_dev/src/app/shared/notify.service.ts:34:17: Cannot find name 'Notification'.
Error at c:/xampp/htdocs/project/_dev/src/app/shared/notify.service.ts:35:17: Cannot find name 'Notification'.
Error at c:/xampp/htdocs/project/_dev/src/app/shared/notify.service.ts:35:61: Cannot find name 'NotificationPermission'.
Error at c:/xampp/htdocs/project/_dev/src/app/shared/notify.service.ts:56:36: Cannot find name 'Notification'.
    at check (c:\xampp\htdocs\project\_dev\node_modules\@angular\tsc-wrapped\src\tsc.js:31:15)
    at Tsc.typeCheck (c:\xampp\htdocs\project\_dev\node_modules\@angular\tsc-wrapped\src\tsc.js:86:9)
    at c:\xampp\htdocs\project\_dev\node_modules\@angular\tsc-wrapped\src\main.js:33:23
    at process._tickCallback (internal/process/next_tick.js:103:7)
    at Module.runMain (module.js:606:11)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3
Compilation failed

window.Notification オブジェクトとそのメソッド用のカスタム TS 定義ファイルがありますが、このファイルの場所を ngc コンパイラに伝えるにはどうすればよいですか?

私の tsconfig.json ファイル:

{
    "compilerOptions": {
        "target": "es5",
        "module": "es2015",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "lib": ["es2015", "dom"],
        "noImplicitAny": false,
        "suppressImplicitAnyIndexErrors": true,
        "skipLibCheck": true,
        "outDir": "./compiled"
    },

    "files": [
        "./src/app/app.module.ts",
        "./src/main.aot.ts"
    ],

    "angularCompilerOptions": {
        "genDir": "aot",
        "skipMetadataEmit": true
    }
}
4

1 に答える 1

2

理解した:

  • custom_typingsプロジェクトのルートにフォルダーを作成しました。
  • カスタム TS 定義でnotification呼び出されたフィールドで呼び出されたサブフォルダーを作成しました。index.d.ts
  • compilerOptions私の tsconfig ファイルに以下を追加しました

:

"typeRoots": [
    "./custom_typings",
    "./node_modules/@types"
]

コンパイラはそれを自動的に取得し、すべて問題ありません。

于 2016-12-18T09:49:19.907 に答える