TypeError:navigator.currentLang不是函数

时间:2017-01-05 12:41:24

标签: javascript angular typescript ionic-framework ionic2

我正在使用Ionic 2来开发移动应用程序。以下是我的离子装置的信息:

  • Cordova CLI:6.3.1
  • Ionic Framework版本:2.0.0-rc.4
  • Ionic CLI版本:2.1.18
  • Ionic App Lib版本:2.1.9
  • Ionic App Scripts版本: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时,Google开发者控制台会显示以下错误:

TypeError: navigator.currentLang is not a function

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

1 个答案:

答案 0 :(得分:0)

此代码的已编译输出:

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());