NativeScript / Angular-如何在两个应用程序之间共享导入?

时间:2018-10-26 10:03:54

标签: angular typescript angular-cli nativescript-angular nativescript-schematics

我不敢相信互联网上或官方的NativeScript文档中都没有提到这一点。

如何在Web应用程序和本机应用程序之间共享导入?

在具有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上运行应用程序时,它不起作用。

您无法检查在哪个平台上运行并决定导入的外观,因为由于同一事物在同一文件中两次导入,因此会出现“重复导入”错误。

在我发疯之前有人可以帮我吗?

编辑:

我运行了以下命令来生成项目:

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

here所述。

这是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"
    ]
}

0 个答案:

没有答案