javascript - TypeError : navigator. currentLang 不是函数

标签 javascript angular typescript ionic-framework ionic2

我正在使用 Ionic 2 开发移动应用程序。以下是我的ionic安装信息:

  • Cordova CLI:6.3.1
  • ionic 框架版本:2.0.0-rc.4
  • Ionic CLI 版本:2.1.18
  • Ionic 应用程序库版本:2.1.9
  • Ionic 应用程序脚本版本:0.0.47
  • ios-deploy 版本:未安装
  • ios-sim 版本:未安装
  • 操作系统:Windows 10
  • 节点版本:v6.9.2
  • Xcode 版本:未安装

我有一个 extension.ts 文件,其中包含预定义类型的 TypeScript/JavaScript 的各种扩展,包括以下类:

export {};

declare global {
    interface Navigator {
        currentLang() : string;
    }
}

Navigator.prototype.currentLang = function() {
    var userLang = navigator.language.split('-')[0];
    userLang = /(en|it)/gi.test(userLang) ? userLang : 'en';
    return userLang;
};

当我运行命令 ionic serve 时,谷歌开发者控制台显示以下错误:

TypeError: navigator.currentLang 不是函数

可能是什么问题? 我是不是忘记了什么?

最佳答案

这段代码的编译输出:

import { } from '../extensions';
console.log(navigator.currentLang());

假设默认模块选项是:

console.log(navigator.currentLang());

js 文件中没有导入,因此当您尝试在浏览器中运行它时,它不会加载 ../extensions.js 因此 navigator.currentLang未定义。
这是因为您实际上还没有从模块中导入任何东西。

语法是:

import '../extensions';
console.log(navigator.currentLang());

编译为:

require("../extensions");
console.log(navigator.currentLang());

关于javascript - TypeError : navigator. currentLang 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485410/

相关文章:

javascript - 如何使用jquery在html表格的右侧添加一定数量的空白列

javascript - jQueryJavaScript 错误 - 丢失;声明前

javascript - 类型 '{ period: any; prices: any; }' 的参数不可分配给类型 'MAInput' 的参数

angular - 从 Controller 以编程方式更改 [(ngModel)] 绑定(bind)

javascript - 使用 if else 声明 `let` 或 `const` 在 if/else 之后使用?

javascript - 填充两个 DIV 元素之间的空白区域

javascript - 如何在 Angular 应用程序中将文本区域内容复制到剪贴板

angular - 带排序的垫表似乎没有对列进行排序

angular - 键值对数组转化为数组对象

visual-studio-2012 - 在 Typescript 和 Visual Studio Express 中定义共享库