nativescript 6.0.1 не может запустить/подготовить приложение для Android

Недавно я обновил tns до версии 6.0.1, которая, как я читал, всегда использует webpack для создания проектов.

Я использовал tns migrate в своем проекте, обновил свой локальный плагин до AndroidX (с опцией рефакторинга Android Studio), сгенерировал файл .aar и использовал tns migrate в своем демонстрационном проекте плагина. После этого, когда я пробую демонстрационный проект, он работает. Моя проблема связана с моим основным проектом: я добавил новый плагин в свой проект, удалил и добавил платформу Android (tns-android версия 6.0.0), но когда я запускаю tns prepare android или tns run android, я получаю эту ошибку относительно моего плагина:

ERROR in /workspace/workspace-nativescript/nativescript-my-plugin/src/my-plugin.ts
Module build failed (from ../node_modules/@ngtools/webpack/src/index.js):
Error: /workspace/workspace-nativescript/nativescript-my-plugin/src/my-plugin.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
    at NativeScriptAngularCompilerPlugin.getCompiledFile (/workspace/workspace-nativescript/my-project/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:844:23)
    at NativeScriptAngularCompilerPlugin.getCompiledFile (/workspace/workspace-nativescript/my-project/node_modules/nativescript-dev-webpack/plugins/NativeScriptAngularCompilerPlugin.js:28:26)
    at plugin.done.then (/workspace/workspace-nativescript/my-project/node_modules/@ngtools/webpack/src/loader.js:41:31)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Я читал, что раньше были такие проблемы с nativescript-dev-webpack, но у меня версия 1.0.1 от tns migrate, которая является последней. Также вот мой файл tnsconfig.json (у меня тоже есть файл nsconfig.json, но он пустой):

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "noEmitHelpers": true,
        "noEmitOnError": true,
        "lib": [
            "es6",
            "dom",
            "es2015.iterable"
        ],
        "baseUrl": ".",
        "paths": {
            "~/*": [
                "app/*"
            ],
            "*": [
                "./node_modules/tns-core-modules/*",
                "./node_modules/*"
            ]
        }
    },
    "exclude": [
        "node_modules",
        "platforms"
    ]
}

person amlibtest    schedule 19.07.2019    source источник
comment
У вас действительно есть файл nativescript-my-plugin/src/my-plugin.ts в вашем проекте? Или это специфичные для платформы файлы, такие как nativescript-my-plugin/src/my-plugin.[ios|android].ts?   -  person Manoj    schedule 20.07.2019
comment
@Manoj У меня нет файла src/my-plugin.ts, но есть файлы android/ios. Я предположил, что этот файл создается или ссылается на платформу при создании пакета, потому что демо-проект также пытается его найти, но не показывает никаких ошибок. На всякий случай мой package.json файл импортирует плагин таким образом "my-plugin": "file:<local_path_to_plugin>/src"   -  person amlibtest    schedule 22.07.2019
comment
Это похоже на здесь, попробуйте удалить файлы, специфичные для платформы. и иметь один файл my-plugin.ts и посмотреть, решит ли это проблему.   -  person Manoj    schedule 22.07.2019


Ответы (1)


Скорее всего, вы связали плагин TypeScript в своем основном приложении Angular (вместо того, чтобы установить его из tgz).

Я предполагаю, что ваш плагин уже создан из официального семени плагинов, и поэтому демонстрационное приложение правильно настроено или вы используете демонстрацию TypeScript, а не Angular.

Когда вы хотите связать плагин в своем приложении Angular, вы должны включить его файлы TypeScript (насколько я знаю, это ограничение AngularCompilerPlugin). Это уже настроено в ваших демонстрационных приложениях, если вы начинаете с исходного кода плагинов (tns plugin create).

Другими словами, откройте tsconfig.json в своем основном приложении (/workspace/workspace-nativescript/my-project/tsconfig.json) и замените его содержимое на:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "noEmitHelpers": true,
        "noEmitOnError": true,
        "lib": [
            "es6",
            "dom",
            "es2015.iterable"
        ],
        "baseUrl": ".",
        "paths": {
            "~/*": [
                "app/*"
            ],
            "*": [
                "./node_modules/tns-core-modules/*",
                "./node_modules/*"
            ]
        }
    },
    "include": [
        "../nativescript-my-plugin/src",
        "**/*"
    ],
    "exclude": [
        "../nativescript-my-plugin/src/node_modules",
        "node_modules",
        "platforms"
    ]
}
person Dimitar Tachev    schedule 22.07.2019
comment
Я сделал то, что вы сказали, и получил несколько предупреждений: hooks/after-prepare/nativescript-dev-version.js will NOT be executed because it has invalid arguments - $usbLiveSyncService. - hooks/after-prepare/nativescript-nodeify.js will NOT be executed because it has invalid arguments - $platformsData. и эту ошибку **ERROR** TypeError: Cannot read property 'ViewCompat' of undefined. Я не уверен, является ли эта ошибка частью плагина или чем-то еще, поэтому я пока отмечу это как правильный ответ. - person amlibtest; 22.07.2019
comment
@amlibtest В данный момент я переживаю аналогичный процесс/проблему. Вы случайно не решили проблему с TypeError: Cannot read property 'ViewCompat' of undefined? - person N.J.Dawson; 24.07.2019
comment
Похоже, версии этих плагинов (nativescript-dev-version и nativescript-nodeify) несовместимы с [email protected]. Я предлагаю вам взглянуть на их раздел вопросов GitHub. - person Dimitar Tachev; 29.07.2019
comment
@N.J.Dawson для проблемы с ViewCompat см. Ответ, который я разместил здесь: stackoverflow.com/questions/57597342/ - person acrollet; 21.08.2019