Не могу поверить, что об этом нигде не упоминается ни в Интернете, ни в официальных документах по 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"
]
}