index.ts отсутствует в компиляции TypeScript

При запуске ng serve возникла следующая ошибка.

node_modules / angular2-indexeddb / index.ts отсутствует в компиляции TypeScript. Убедитесь, что он находится в вашем tsconfig через свойство 'files' или 'include'. Похоже, что недостающий файл является частью сторонней библиотеки. Файлы TS в опубликованных библиотеках часто являются признаком плохо упакованной библиотеки. Откройте проблему в репозитории библиотеки, чтобы предупредить ее автора и попросить его упаковать библиотеку в формате пакета Angular (https://docs.google.com/document/d/1CZC2rcpxffTDfRDs6p1cfbmKNLA6x5O-NtkJglDaBVs/preview).

Я предполагаю, что проблема в том, что angular2-indexeddb не включается в компиляцию tsconfig. https://github.com/gilf/angular2-indexeddb

Я думаю, что нужно временно обойтись, отредактировав следующую конфигурацию в tslint.json, но мне нужно решение, чтобы справиться с этим.

  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ] 

Это потому, что angular2-indexeddb не предоставляет хорошей упакованной библиотеки? На самом деле, я не думаю, что в популярной опубликованной библиотеке должна быть эта проблема. Или я что-то пропустил для настройки или компиляции? Могу ли я использовать инструменты / библиотеку для компиляции пакетов, чтобы скомпилировать их в d.ts или spec.ts?

Обновить:

На самом деле я вижу файл * .d.ts в каталоге:

ls node_modules/angular2-indexeddb/
LICENSE                                 angular2-indexeddb.metadata.json        index.js
README.md                               angular2-indexeddb.min.js               index.js.map
angular2-indexeddb.d.ts                 angular2-indexeddb.min.js.map           index.ts
angular2-indexeddb.js                   angular2-indexeddb.ts                   package.json
angular2-indexeddb.js.map               index.d.ts

Содержание в tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

person Auggie Li    schedule 28.07.2018    source источник


Ответы (1)


{
    "include": [
          "../src/**/*",
          "../node_modules/angular2-indexeddb/index.ts"
    ]
}

РЕДАКТИРОВАТЬ: Я рекомендую вам изменить свою библиотеку на ngx-indexed-db, поэтому вам не нужно этого делать.

person Charles Assuncao    schedule 28.07.2018
comment
Он находится в файле tsconfig.json в разделе compilerOptions? Я получаю следующую ошибку: tsconfig.json (18,5): error TS5023: Unknown compiler option 'exclude'. - person Auggie Li; 29.07.2018
comment
Это не внутри compilerOptions, это на том же уровне - person Charles Assuncao; 29.07.2018
comment
Я все еще вижу ту же проблему после добавления exclude node_modules, я думаю, это потому, что я не добавлял файлы и не включал. Как выглядит стандартный tsconfig.json? Я никогда не менял tsconfig.json, и это нормально для других библиотек. - person Auggie Li; 29.07.2018
comment
Смотрите сейчас отредактировано, попробуйте включить это. И если вы используете новую версию CLI, вам нужно отредактировать ее в своем tsconfig.app.json - person Charles Assuncao; 29.07.2018
comment
После его добавления я получил новую ошибку: ‹project-root› /src/main.ts отсутствует в компиляции TypeScript. Убедитесь, что он находится в вашем tsconfig через свойство 'files' или 'include'. - person Auggie Li; 29.07.2018
comment
Но удалили ли вы * * / * .ts из включений? - person Charles Assuncao; 29.07.2018
comment
Нет, включения там не было. Но он отлично работает, если я удалю библиотеку angular2-indexeddb. - person Auggie Li; 29.07.2018
comment
Спасибо, теперь работает !! Но мне все еще очень любопытно, почему я не включил туда до того, как добавил библиотеку indexeddb, почему она все время работала? - person Auggie Li; 29.07.2018
comment
Я думаю, что это проблема с библиотекой, вы можете видеть, что если вы удалите файлы .ts внутри node_modules / angular2-indexeddb /, также будет работать, но это более многословно :). Хорошо, что сейчас работает :) - person Charles Assuncao; 29.07.2018
comment
Спасибо. После того, как он сработал один раз, даже я вернул tsconfig.app и tsconfig.app.json как были (без включения), он все еще работает. Это потому, что что-то не скомпилировалось? - person Auggie Li; 29.07.2018
comment
Беру свой последний комментарий. Это не работает, если я удалю включить - person Auggie Li; 29.07.2018
comment
@AuggieLi Если вы удалите включения, но перейдете в папку node_modules / angular2-indexeddb и удалите index.ts и angular2-indexeddb.ts, он будет работать, это проблема с библиотекой, я попытаюсь открыть PR, исправляя это для их :) - person Charles Assuncao; 29.07.2018
comment
Спасибо. Не могли бы вы сообщить мне, когда это будет исправлено? - person Auggie Li; 29.07.2018
comment
Привет, @AuggieLi! Я сделал несколько улучшений в библиотеке, и теперь вам не нужна эта конфигурация для включения в конфигурацию ts, вы можете заменить свой ng2-indexeddb для этой новой версии: npmjs.com/package/ngx-indexed-db. - person Charles Assuncao; 29.07.2018