Пользовательская библиотека angular 7 с ionic 4 - не удается устранить ошибку "..//ionic/angular/dist/core.ngfactory" - PullRequest
0 голосов
/ 20 февраля 2019

Мы создали небольшую угловую библиотеку 7 / ionic 4, которую мы хотим использовать в нескольких проектах для внутреннего использования, установив ее через git url.Обслуживание проекта работает корректно, все операции импорта из библиотеки работают нормально.Но при запуске ng build --prod я получаю следующую ошибку

ERROR in ./node_modules/edetail-core/edetail-core.ngfactory.js 
Module not found: Error: Can't resolve '../@ionic/angular/dist/core.ngfactory' in '/Users/user.name/Documents/ionic/edetails/node_modules/edetail-core'

Я пробовал разные настройки - переместить все в devDependencies (main package.json), добавить и удалить пакеты из peerDependencies (библиотека package.json)).добавление

"lib": {
    "entryFile": "src/public_api.ts",
    "externals": "@ionic/angular"
  }

(lib ng-package.json), но ничего не помогло.IonicModule импортируется из '@ionic/angular' в основной файл модуля библиотеки (edetail-core.module.ts).

Вот файл ng-package.json

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/edetail-core",
  "lib": {
    "entryFile": "src/public_api.ts"
  }
}

библиотека package.json

{
  "name": "edetail-core",
  "version": "0.0.1",
  "peerDependencies": {
    "@angular/common": "^7.2.0",
    "@angular/core": "^7.2.0",
    "@ionic-native/core": "^5.0.0-beta",
    "rxjs": "^6.3.3",
    "@ionic/angular": "^4.0.0"
  }
}

main package.json

{
  "name": "edetail-core",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve edetail-test",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",        
    "npm-pack": "cd dist/edetail-core && npm pack",
    "prepare": "npm run build"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~7.2.0",
    "@angular/common": "~7.2.0",
    "@angular/compiler": "~7.2.0",
    "@angular/core": "~7.2.0",
    "@angular/forms": "~7.2.0",
    "@angular/platform-browser": "~7.2.0",
    "@angular/platform-browser-dynamic": "~7.2.0",
    "@angular/router": "~7.2.0",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^4.0.0",
    "@ng-bootstrap/ng-bootstrap": "^4.0.0",
    "bootstrap": "^4.1.3",
    "core-js": "^2.5.4",
    "rxjs": "~6.3.3",
    "scss-bundle": "^2.4.0",
    "tslib": "^1.9.0",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.13.0",
    "@angular-devkit/build-ng-packagr": "~0.13.0",
    "@angular/cli": "~7.3.1",
    "@angular/compiler-cli": "~7.2.0",
    "@angular/language-service": "~7.2.0",
    "@ionic/angular-toolkit": "~1.2.0",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~3.1.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "ng-packagr": "^4.2.0",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tsickle": ">=0.34.0",
    "tslib": "^1.9.0",
    "tslint": "~5.11.0",
    "typescript": "~3.2.2"
  },
  "files": [
    "dist"
  ]
}

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 16 августа 2019

Просто добавьте строку "@ionic/*": ["node_modules/@ionic/*"] к путям в ваших файлах tsconfig.json / tsconfig.app.json

{
    ...
    "compilerOptions": {
        "paths": {
            "@angular/*": ["node_modules/@angular/*"],
            "@ionic/*": ["node_modules/@ionic/*"],
            ...
         }
    }
    ...
}

...