NativeScript / Angular - Как разделить импорт между двумя приложениями? - PullRequest
0 голосов
/ 26 октября 2018

Не могу поверить, что об этом нигде не упоминается ни в Интернете, ни в официальных документах по NativeScript.

Как вы разделяете импорт между веб-приложением и собственным приложением?

Следующее работает при запуске приложения в собственной среде с npm run android:

import {App} from '~/app/shared/constants/app.constant';

Но затем, если я запускаю его с помощью ng serve, чтобы запустить мое приложение в браузере, оно говорит:

Не удалось найти модуль '~ / app / shared / constants / app.constant'.

Если я попытаюсь определить собственные пути в моем файле tsconfig.json:

"paths": {
    "~/*": [
        "src/*"
    ],
    "*": [
        "./node_modules/tns-core-modules/*",
        "./node_modules/*"
    ],
    "@components/*": ["src/app/shared/components/*"],
    "@constants/*": ["src/app/shared/constants/*"]
}

И затем делает:

import {App} from '@constants/app.constant';

Запуск этого с ng serve работает, но УГАДАТЬ ЧТО, он не работает при запуске приложения с npm run android.

Вы не можете проверить, на какой платформе вы работаете, и решить, как выглядит импорт, потому что тогда вы получаете ошибку «дубликата импорта» из-за того, что одна и та же вещь дважды импортируется в один и тот же файл.

Может кто-нибудь помочь мне, прежде чем я сойду с ума?

EDIT:

Я запустил эту команду для генерации проекта:

ng new -c=@nativescript/schematics foo-project --shared --style=scss

Как описано здесь .

Это tsconfig.json:

{
    "compileOnSave": false,
    "compilerOptions": {
        "outDir": "./dist/out-tsc",
        "declaration": false,
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2017",
            "dom",
            "es6",
            "es2015.iterable"
        ],
        "baseUrl": ".",
        "paths": {
            "~/*": [
                "src/*"
            ],
            "*": [
                "./node_modules/tns-core-modules/*",
                "./node_modules/*"
            ],
            "@components/*": ["src/app/shared/components/*"],
            "@constants/*": ["src/app/shared/constants/*"]
        }
    },
    "exclude": [
        "**/*.tns.ts",
        "**/*.android.ts",
        "**/*.ios.ts",
        "**/*.spec.ts"
    ]
}
...