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

У меня есть приложение 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.

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

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

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
165
1

Ответы 1

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

Когда я удалил с Mac и скопировал их с моей машины Windows на Mac, все было в порядке.

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

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

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

Нет, чтобы получить ту же версию c3 из репозитория git, вы можете просто добавить # и идентификатор фиксации к URL-адресу, как описано в Справочная страница npm-install.

Matt McCutchen 20.09.2018 05:36

@MattMcCutchen - Да, понятно. Спасибо. У меня вообще там версии нет !. Мои плохие и хорошие npm. Так что у меня должно быть что-то вроде "c3": "git: // github.com / masayuki0812 / c3.git#v0.4.17", as 0.4.17 was the version I have in my node_modules` на моем компьютере с Windows.

peterc 21.09.2018 03:53

Другие вопросы по теме