如何使Chrome DevTools识别Moment.js

29

我正在开发ionic2项目。我刚刚开始使用moment.js,但是我遇到了一个奇怪的问题。 我已经通过npm进行了安装:npm install moment -S

然后我在我的代码中使用它:

import moment from 'moment'
...
let x = moment()
debugger

在控制台上我遇到了这个有趣的问题:

> x
< Moment {_isAMomentObject: true, _isUTC: false, _pf: {…}, _locale: Locale, _d: Wed Jun 27 2018 12:06:23, …}
> y = moment()
< VM770:1 Uncaught ReferenceError: moment is not defined
    at eval (eval at Phase (phase.ts:13), <anonymous>:1:1)
    at new Phase (phase.ts:13)
    at new Stage (stage.ts:10)
    at new HomePage (home.ts:39)
    at createClass (core.es5.js:10795)
    at createDirectiveInstance (core.es5.js:10621)
    at createViewNodes (core.es5.js:11971)
    at createRootView (core.es5.js:11876)
    at callWithDebugContext (core.es5.js:13007)
    at Object.debugCreateRootView [as createRootView] (core.es5.js:12468)

为什么我不能在控制台中使用moment?


由于在这个上下文中不再使用 moment()("debugger" 是最后一行),我猜测 V8 在这个上下文中对其进行了优化。 - wOxxOm
调试器后面我加了 let y = moment(),但是还是出现了同样的错误。 - user1692261
如果你还没有这样做,可以在终端中运行 node 并在其中引入 moment。 这就是我所做的。 - thehme
你能发布这段代码的转译版本吗?也许会得到一些答案。 - A1rPun
2个回答

45

可以像这样从浏览器控制台获取它:

fetch('https://momentjs.com/downloads/moment.min.js')
    .then(response => response.text())
    .then(text => eval(text))

那么您就可以在那里正常使用它


由于它违反以下内容安全策略指令,它不允许我连接:Refused to connect to 'https://momentjs.com/downloads/moment.min.js' - Aniket Thakur

14
如果该库没有以正常形式导入,则无法访问它。如果您想在Chrome控制台中使用 moment() ,您可以尝试打开官方网站,然后转到控制台。
在控制台中,您可以输入类似以下的内容:
moment("20111031", "YYYYMMDD").fromNow(); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接