如何替换 npm 中的凉亭包 jsTimezoneDetect

Posted

技术标签:

【中文标题】如何替换 npm 中的凉亭包 jsTimezoneDetect【英文标题】:How can I replace the bower package jsTimezoneDetect in npm 【发布时间】:2020-07-06 15:32:00 【问题描述】:

我正在尝试替换我的仓库中的 bower,但我无法替换这个包:"jsTimezoneDetect": "1.0.4"。替换它的建议包是"jstimezonedetect": "^1.0.6"。我正在使用这个包,如下所示:

var missionJoin = 
    timeZoneId : jstz.determine().name()
;

然而,这给了我这个错误:

ReferenceError: Can't find variable: Intl in node_modules/jstimezonedetect/dist/jstz.js (line 124)
get_from_internationalization_api@node_modules/jstimezonedetect/dist/jstz.js:124:22
determine@node_modules/jstimezonedetect/dist/jstz.js:412:67
joinMission@app/scripts/controllers/robo.profile.ProfileServiceCtrl.js:1:27975
test/specs/robo.profile.profileServiceCtrl.spec.js:151:27
<Jasmine>

此包没有任何依赖关系,错误似乎来自包本身的问题。我在这里做错了什么吗?有没有其他人遇到过类似的问题?任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

对于将来可能遇到此问题的任何人,以下是我解决此问题的方法:

在https://github.com/iansinnott/jstz最后一段找到

export function findTimeZone() 
  const oldIntl = window.Intl
  try 
    window.Intl = undefined
    const tz = jstz.determine().name()
    window.Intl = oldIntl
    return tz
   catch (e) 
    // sometimes (on android) you can't override intl
    return jstz.determine().name()
  

var missionJoin = 
    timeZoneId : findTimeZone()
;

【讨论】:

以上是关于如何替换 npm 中的凉亭包 jsTimezoneDetect的主要内容,如果未能解决你的问题,请参考以下文章

AWS - 通过 npm install 安装凉亭组件

你如何卸载所有的凉亭包?

npm install 给出错误:EPERM,取消链接

Node.js 问题 :: Angular 未定义 :: 无法罚款凉亭包 :: nodegyp vs Python

如何将凉亭组件与sails.js 连接?

在 `npm install` 之前用 dotenv 替换 .npmrc 中的 env 变量