从 Nativescript 6.1 核心打字稿文件访问 webpack 变量

Accessing webpack variables from Nativescript 6.1 Core typescript file

我有一个 NS 6.1 核心应用程序。在 webpack 中,我想添加一个我想稍后在打字稿文件中访问的变量。这是我的代码:

// Define useful constants like TNS_WEBPACK
            new webpack.DefinePlugin({
                "global.TNS_WEBPACK": "true",
                "process": "global.process",
                "myGlobal.environment": JSON.stringify(env.mode|| 'not defined'),
            }),

TS:

declare let myGlobal: any;

export function onLoaded(e) {
    page = <Page>e.object;

    console.log('myGlobal.environment: ' + myGlobal.environment); 
}

我面临的问题是当我 运行 代码时没有定义 myGlobal。

我尝试删除 platforms 文件夹并重建,但我得到了同样的错误。

关于我可能做错了什么有什么想法吗?

问题是 env 常量 not 有一个 mode 属性 但是一个布尔值叫做 生产。这是 env 的样子

const {
    // The 'appPath' and 'appResourcesPath' values are fetched from
    // the nsconfig.json configuration file.
    appPath = "app",
    appResourcesPath = "app/App_Resources",

    // You can provide the following flags when running 'tns run android|ios'
    snapshot, // --env.snapshot
    production, // --env.production
    uglify, // --env.uglify
    report, // --env.report
    sourceMap, // --env.sourceMap
    hiddenSourceMap, // --env.hiddenSourceMap
    hmr, // --env.hmr,
    unitTesting, // --env.unitTesting,
    verbose, // --env.verbose
    snapshotInDocker, // --env.snapshotInDocker
    skipSnapshotTools, // --env.skipSnapshotTools
    compileSnapshot // --env.compileSnapshot
} = env;

如 JavaScript undefined 等于 false (对于布尔值),这意味着如果 release 标志未显式传递,生产将始终未定义 (false)。因此,您可以执行以下操作:

"myGlobal.environment": JSON.stringify(env.production || "development")

或者转念一想更像是

"myGlobal.environment": JSON.stringify(env.production ? "production" : "development")