【发布时间】:2017-05-08 22:13:22
【问题描述】:
moment-timezone 的一个问题是,如果你多次包含它,它会给你一个警告。我有一个需要时区的模块。因为我不知道使用的人是否会自己设置时区,所以我有以下内容:
if (moment.tz === undefined) {
require('moment-timezone');
moment.tz.setDefault('America/Los_Angeles');
}
这在普通的 Javascript 中运行良好。我最近正在尝试切换到 Typscript,当我这样做时,我得到了 Cannot find name 'require' 的错误。
我将该行切换到import momentTimezone = require('moment-timezone');,然后得到An import declaration can only be used in a namespace or module.
我能做什么?
【问题讨论】:
-
我认为这可以帮助你:stackoverflow.com/questions/12742082/…
-
@Matthijs,不,我最初看到的是(这就是
import momentTimezone =...尝试的来源)。但这也行不通:( -
这段代码的执行上下文是什么?如果这是在浏览器中,您需要有一个可用的模块加载器以确保定义了 require。如果这是在 node 中,您需要为 require 函数安装类型(通过 require 或 node)或声明该函数类型,就像在 @Matthijs 引用的帖子中一样
-
导入失败的原因是导入语法是一些特定于 TS 的额外内容。这让 TS 可以根据 tsconfig 中的模块配置编译成各种依赖规范格式。就像您使用 ES6 样式导入 (
import {...} from '...') 一样。动态需求需要使用 require 函数作为特定于加载器的函数。
标签: javascript typescript