0

我不敢相信互联网上和 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

如此处所述。

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

0 回答 0