Ошибка сборки TypeScript для приложения Ionic с использованием библиотеки графов C3 / D3 - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть приложение Ionic / Cordova, которое я наконец-то (получил время) пересмотреть и добавить некоторые модификации, так что прошло много времени с тех пор, как я в последний раз строил на своем Mac (я обычно разрабатываю для Windows)

Я сделал свои модификации, и он прекрасно собирается для платформы Android, на моем компьютере с Windows.

После Mac я также запустил сборку Android (я использую Mac в качестве официального компьютера для сборки длякак iOS, так и Android), я не получаю следующую ошибку на этапе веб-упаковки ...

            [INFO] Running app-scripts build: --prod --platform android --target cordova

        [08:03:39]  build prod started ... 
        [08:03:39]  clean started ... 
        [08:03:39]  clean finished in 23 ms 
        [08:03:39]  copy started ... 
        [08:03:39]  ngc started ... 
        [08:03:59]  ngc finished in 19.74 s 
        [08:03:59]  preprocess started ... 
        [08:03:59]  deeplinks started ... 
        [08:04:00]  deeplinks finished in 563 ms 
        [08:04:00]  optimization started ... 
        [08:04:01]  copy finished in 21.05 s 
        [08:04:16]  optimization finished in 15.95 s 
        [08:04:16]  preprocess finished in 16.52 s 
        [08:04:16]  webpack started ... 
        Error: ./node_modules/d3-quadtree/src/quadtree.js
        Module build failed: TypeError: Cannot read property 'get' of undefined
            at isNameOfExportsOrModuleExportsAliasDeclaration (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:23318:47)
            at bindStaticPropertyAssignment (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:23396:17)
            at bindWorker (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:23079:29)
            at bind (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:22974:13)
            at visitNode (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:14662:20)
            at Object.forEachChild (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:14725:21)
            at bindEachChild (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:21771:16)
            at bindChildrenWorker (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:21852:21)
            at bindChildren (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:21746:17)
            at bind (/Users/Development/dev/build/myapp/trunk/node_modules/typescript/lib/typescript.js:22985:21)
        @ ./node_modules/d3-quadtree/src/index.js 1:0-49
        @ ./node_modules/d3/index.js
        @ ./src/pages/performance/performance.ts
        @ ./src/pages/performance/performance.ngfactory.ts
        @ ./src/app/app.module.ngfactory.ts
        @ ./src/app/main.ts
            at new BuildError (/Users/Development/dev/build/myapp/trunk/node_modules/@ionic/app-scripts/dist/util/errors.js:16:28)
            at callback (/Users/Development/dev/build/myapp/trunk/node_modules/@ionic/app-scripts/dist/webpack.js:119:28)
            at emitRecords.err (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/Compiler.js:265:13)
            at Compiler.emitRecords (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/Compiler.js:371:38)
            at emitAssets.err (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/Compiler.js:258:10)
            at applyPluginsAsyncSeries1.err (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/Compiler.js:364:12)
            at next (/Users/Development/dev/build/myapp/trunk/node_modules/tapable/lib/Tapable.js:218:11)
            at Compiler.compiler.plugin (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/performance/SizeLimitsPlugin.js:99:4)
            at Compiler.applyPluginsAsyncSeries1 (/Users/Development/dev/build/myapp/trunk/node_modules/tapable/lib/Tapable.js:222:13)
            at Compiler.afterEmit (/Users/Development/dev/build/myapp/trunk/node_modules/webpack/lib/Compiler.js:361:9)

В стеке вызовов я вижу строку node_modules/d3/index.js.У меня были другие проблемы со сборками, связанные с C3 / D3, но эта кажется другой.И он прекрасно работает на моей машине с Windows.

Я обновляю Node (так как он был намного старше, чем на моей Windows), но это не имело никакого значения.

Моя среда (работает с Ionic info)на Mac выглядит следующим образом ...

  ionic info

  cli packages: (/usr/local/lib/node_modules)

      @ionic/cli-utils  : 1.13.1
      ionic (Ionic CLI) : 3.13.1

  global packages:

      cordova (Cordova CLI) : 7.0.1 

  local packages:

      @ionic/app-scripts : 2.1.4
      Cordova Platforms  : android 6.2.3 ios 4.3.1 windows 4.4.3
      Ionic Framework    : ionic-angular 3.6.1

  System:

      Android SDK Tools : 25.2.5
      ios-deploy        : 1.9.1 
      ios-sim           : 5.0.13 
      Node              : v8.12.0
      npm               : 6.4.1 
      OS                : macOS High Sierra
      Xcode             : Xcode 9.4.1 Build version 9F2000 

  Misc:

      backend : legacy

Мой package.json имеет следующее ...

         "dependencies": {
            "@angular/animations": "4.1.3",
            "@angular/common": "4.1.3",
            "@angular/compiler": "4.1.3",
            "@angular/compiler-cli": "4.1.3",
            "@angular/core": "4.1.3",
            "@angular/forms": "4.1.3",
            "@angular/http": "4.1.3",
            "@angular/platform-browser": "4.1.3",
            "@angular/platform-browser-dynamic": "4.1.3",
            "@ionic-native/app-version": "^3.8.0",
            "@ionic-native/core": "3.6.1",
            "@ionic-native/device": "^3.8.0",
            "@ionic-native/file": "^3.7.0",
            "@ionic-native/network": "^3.8.0",
            "@ionic-native/social-sharing": "^3.7.0",
            "@ionic-native/splash-screen": "3.6.1",
            "@ionic-native/status-bar": "3.6.1",
            "@ionic-native/toast": "^3.8.0",
            "@ionic/storage": "2.0.1",
            "c3": "git://github.com/masayuki0812/c3.git",
            "cordova-android": "latest",
            "cordova-plugin-app-version": "^0.1.9",
            "cordova-plugin-compat": "^1.0.0",
            "cordova-plugin-console": "^1.0.5",
            "cordova-plugin-device": "^1.1.6",
            "cordova-plugin-email-composer": "git+https://github.com/3spin/cordova-plugin-email-composer.git",
            "cordova-plugin-file": "^4.3.3",
            "cordova-plugin-ios-disableshaketoedit": "^1.0.0",
            "cordova-plugin-network-information": "^1.3.3",
            "cordova-plugin-splashscreen": "^4.0.3",
            "cordova-plugin-statusbar": "^2.2.1",
            "cordova-plugin-whitelist": "^1.3.1",
            "cordova-plugin-wkwebview-engine": "https://github.com/driftyco/cordova-plugin-wkwebview-engine.git",
            "cordova-plugin-x-socialsharing": "^5.1.8",
            "cordova-plugin-x-toast": "^2.6.0",
            "cordova-windows": "^5.0.0",
            "cordova-windows-capability-localnetwork": "^0.1.1",
            "es6-promise-plugin": "^4.1.0",
            "ionic-angular": "3.6.1",
            "ionic-plugin-keyboard": "^2.2.1",
            "ionicons": "3.0.0",
            "js-logger": "^1.3.0",
            "jslogger": "^1.0.3",
            "jszip": "^3.1.3",
            "lodash": "^4.17.4",
            "moment": "^2.17.1",
            "moment-duration-format": "^1.3.0",
            "ng2-translate": "^5.0.0",
            "rxjs": "5.1.1",
            "semaphore-async-await": "^1.3.2",
            "sw-toolbox": "3.6.0",
            "zone.js": "0.8.10"
        },
        "devDependencies": {
            "@ionic/app-scripts": "2.1.4",
            "@ionic/cli-plugin-proxy": "1.3.0",
            "@types/c3": "^0.4.41",
            "@types/jasmine": "^2.5.54",
            "@types/jszip": "0.0.32",
            "@types/lodash": "^4.14.51",
            "@types/moment-duration-format": "^1.3.1",
            "@types/node": "^7.0.43",
            "angular2-template-loader": "^0.6.2",
            "codecov": "^1.0.1",
            "html-loader": "^0.5.1",
            "install": "^0.8.7",
            "istanbul-instrumenter-loader": "^3.0.0",
            "jasmine": "^2.8.0",
            "jasmine-spec-reporter": "^4.2.1",
            "karma": "^1.7.1",
            "karma-chrome-launcher": "^2.2.0",
            "karma-coverage-istanbul-reporter": "^1.3.0",
            "karma-jasmine": "^1.1.0",
            "karma-jasmine-html-reporter": "^0.2.2",
            "karma-sourcemap-loader": "^0.3.7",
            "karma-webpack": "^2.0.4",
            "null-loader": "^0.1.1",
            "protractor": "^5.1.2",
            "ts-loader": "^2.3.7",
            "ts-node": "^2.1.2",
            "tslint": "^4.4.2",
            "tslint-eslint-rules": "^3.3.0",
            "typescript": "2.3.0"
        },

Я знаю, что это немного более старая версия Ionic / Angular,но я оставался с этим, не дожидаясь обновления до Ionic 4, так как я знаю, что все (до этого) работало нормально.2.3.0 TypeScript объясняется тем, что в то время у меня была еще одна ошибка компиляции TypeScript с 2.3.3, возвращаясь к 2.3.0 исправлено.

Еще раз, я не получить это на моем компьютере с Windows.

Кто-нибудь есть какие-либо идеи о том, что вызывает эту ошибку, или как отследить ее, и как я могу исправить?

Заранее спасибо!

1 Ответ

0 голосов
/ 20 сентября 2018

Как страшно, моя проблема была в том, что пакеты D, D3, C3 в node_modules, казалось, полностью изменили структуру (когда я установил npm)!

Когда я удалил с Mac и скопировалэто все с моего компьютера с Windows на Mac, все было в порядке.

Может быть, это потому, что я использую "c3": "git://github.com/masayuki0812/c3.git", а не просто версию.Это была какая-то проблема, когда мне нужно было нацелиться именно на этот коммит.

У меня был ряд проблем с D3 и TypeScript (т.е. проблемы со сборкой), поэтому, возможно, когда у меня будет время, я буду искать другойбиблиотека графиков.

Между тем, означает ли это, что нам нужно проверить node_modules в систему контроля версий! ??Я не хочу этого делать, но я пока сделаю резервные копии этих папок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...