NativeScript + Angular: проект совместного использования кода - PullRequest
0 голосов
/ 07 ноября 2018

Я выполнил шаги Nativescript для создания нового проекта совместного использования кода здесь и хотел бы использовать sass. Я пробовал оба для тех, которые имеют тему NatievScript, а также ту, которая не имеет:

ng new -c=@nativescript/schematics no-theme-project --shared --no-theme

или

ng new -c=@nativescript/schematics sass-no-theme-project --shared --style=scss --no-theme

Для этого поста я выбрал Без темы . Когда он заканчивает создание нового проекта, папка выглядит так:

enter image description here

Внутри Desktop/TestProjects/sass-no-theme-project Устанавливаю узловые модули:

npm install

При запуске ng serve --o приложение собирается и загружается, как и ожидалось, в браузере. Однако для NativeScript mobile для Android (iOS еще не тестировалась) приложение вылетает с ошибкой. Я пробовал как tns run android, так и использовать NativeScript SideKick для сборки, но в итоге они дают одинаковые результаты. Я также пробовал локальные и облачные сборки.

Используемое устройство:

Физический Samsung A5: не эмулятор

Ошибка на мобильном устройстве в журналах:

An uncaught Exception occurred on "main" thread.
java.lang.RuntimeException: Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException: Application entry point file not found. Please specify the file in package.json otherwise make sure the file index.js or bootstrap.js exists.\nIf using typescript make sure your entry point file is transpiled to javascript.
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6065)
    at android.app.ActivityThread.-wrap1(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: com.tns.NativeScriptException: Application entry point file not found. Please specify the file in package.json otherwise make sure the file index.js or bootstrap.js exists.\nIf using typescript make sure your entry point file is transpiled to javascript.
    at com.tns.Module.bootstrapApp(Module.java:311)
    at com.tns.Runtime.run(Runtime.java:544)
    at com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1125)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6062)
    ... 8 more
Caused by: com.tns.NativeScriptException: Failed to find module: "./", relative to: app//
    at com.tns.Module.resolvePathHelper(Module.java:146)
    at com.tns.Module.bootstrapApp(Module.java:309)
    ... 12 more

Журналы в командной строке и клиенте NativeScript

[18-11-10 17:43:53.724] (CLI) [./main.ns.ts] 1.22 KiB {bundle} [built]
[18-11-10 17:43:53.724] (CLI) [./package.json] 123 bytes {bundle} [optional] [built]
[18-11-10 17:43:53.724] (CLI)     + 403 hidden modules
[18-11-10 17:43:53.724] (CLI) ERROR in Patterns must be a string or an array of strings
[18-11-10 17:43:53.724] (CLI)  Webpack compilation complete.
[18-11-10 17:43:53.724] (CLI)  Executing webpack failed with exit code 2.
[18-11-10 17:43:53.724] (CLI)  # tns build android
[18-11-10 17:43:53.724] (CLI) ### Description
[18-11-10 17:43:53.724] (CLI) clean-webpack-plugin: /mnt/storage/builds/_/1bfec9e7b462a1843535f909d892c70d2010e1cf/5.0.0/5.0.0/no-sass-project/platforms/android/app/src/main/assets/app/**/* has been removed.
[18-11-10 17:43:53.724] (CLI) Executing webpack failed with exit code 2.
[18-11-10 17:43:53.724] (CLI) bc_GgX4lpDXQFHYT4ydmJ
[18-11-10 17:43:56.917] (CLI) Unable to apply changes on device: 5210ffc964ca44f3. Error is: Build failed..
[18-11-10 17:43:56.920] Error detected during LiveSync on 5210ffc964ca44f3 for C:\Users\userName\Desktop\no-sass-project. Error: Build failed.
[18-11-10 17:43:56.925] (CLI) Executing after-watch hook from C:\Users\userName\Desktop\no-sass-project\hooks\after-watch\nativescript-dev-sass.js
[18-11-10 17:43:56.925] (CLI) Executing after-watch hook from C:\Users\userName\Desktop\no-sass-project\hooks\after-watch\nativescript-dev-typescript.js
[18-11-10 17:43:56.925] (CLI) Executing after-watch hook from C:\Users\userName\Desktop\no-sass-project\hooks\after-watch\nativescript-dev-webpack.js
[18-11-10 17:43:56.925] (CLI) Stopping webpack watch

Поскольку Nativescript и Angular создают для меня пустой новый проект, я бы предположил, что это проект HelloWorld, работающий в Web, iOS и Android прямо из ворот.

UPDATE

Я попытался следовать руководству по устранению неполадок здесь , например, переустановить JDK 8, но проблема, тем не менее, сохраняется. Я запустил его один раз, не удалось, и через 4-10 минут он восстановился и работал. С тех пор я не могу заставить его работать во второй раз. Это наводит меня на мысль, что где-то могут быть проблемы с конфигурацией, такие как tsconfig json файлы. Взглянул на них, и они, кажется, в порядке.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

При создании проектов совместного использования кода вы должны использовать флаг --bundle. Итак, ваша команда должна быть:

tns run android --bundle или tns run ios --bundle

Если вы продолжаете забывать флаг --bundle, вы можете использовать сценарии, представленные в package.json , и запустить: npm run android или npm run ios

Кроме того, если ваш проект использует TypeScript 2.7, вам может потребоваться обновить его до 2.8

В качестве дополнительного примечания: вам не нужно moduleId в проектах совместного использования кода, поскольку об этом позаботится веб-пакет.

0 голосов
/ 12 ноября 2018

Кажется, что это может быть трудным для команды nativescript, поскольку пакеты, на которые она опирается, постоянно меняются. Это установка package.json, которую я использовал благодаря @NickIliev из команды nativescript, @skopekreep и старой доброй отладке. Если вы используете эту настройку, все будет в порядке.

Просто будьте осторожны при обновлении пакетов в будущем и протестируйте их перед тем, как отправлять файл package.json

Как и основные пакеты, я бы посоветовал вам внимательно обновиться и убедиться, что вы тестируете:

typescript @types/jasmine nativescript-dev-webpack tns-core-modules

{
  "name": "myproject",
  "nativescript": {
  "id": "org.nativescript.myproject",
    "tns-android": {
    "version": "5.0.0"
   }
},
"version": "0.0.0",
"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e",
  "android": "tns run android --bundle",
  "ios": "tns run ios --bundle"
},
"private": true,
"dependencies": {
  "@angular/animations": "~6.1.0",
  "@angular/common": "~6.1.0",
  "@angular/compiler": "~6.1.0",
  "@angular/core": "~6.1.0",
  "@angular/forms": "~6.1.0",
  "@angular/http": "~6.1.0",
  "@angular/platform-browser": "~6.1.0",
  "@angular/platform-browser-dynamic": "~6.1.0",
  "@angular/router": "~6.1.0",
  "core-js": "^2.5.4",
  "nativescript-angular": "~6.1.0",
  "nativescript-theme-core": "~1.0.4",
  "reflect-metadata": "~0.1.8",
  "rxjs": "^6.0.0",
  "tns-core-modules": "~5.0.2",
  "zone.js": "^0.8.26"
},
"devDependencies": {
  "@angular-devkit/build-angular": "^0.8.0",
  "@angular/cli": "^6.2.0",
  "@angular/compiler-cli": "^7.0.3",
  "@nativescript/schematics": "~0.4.0",
  "@types/jasmine": "2.8.6",
  "@types/jasminewd2": "~2.0.3",
  "@types/node": "~8.9.4",
  "codelyzer": "~4.2.1",
  "jasmine-core": "~2.99.1",
  "jasmine-spec-reporter": "~4.2.1",
  "karma": "~1.7.1",
  "karma-chrome-launcher": "~2.2.0",
  "karma-coverage-istanbul-reporter": "~2.0.0",
  "karma-jasmine": "~1.1.1",
  "karma-jasmine-html-reporter": "^0.2.2",
  "nativescript-dev-sass": "~1.6.0",
  "nativescript-dev-typescript": "~0.7.0",
  "nativescript-dev-webpack": "^0.17.0",
  "protractor": "~5.3.0",
  "ts-node": "~5.0.1",
  "tslint": "~5.9.1",
  "typescript": "^3.1.6"
}

}

Шаги: 1. Установите последнюю версию Node JS

  1. Установить последнюю версию NPM

  2. npm i -g @ angular / cli

  3. npm i -g @ nativescript / schematics

  4. Зайдите в папку и замените файл package.json, убедитесь, что изменили имя и идентификатор на имя вашего проекта

  5. npm install

  6. tns run android --bundle

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