2017-07-29 40 views
0

我正在使用Meteor js的最新版本。我是新手,找不到解决方案。我已经为这个问题冲浪了很多。无法在Google Chrome控制台中访问变量

在问题出现之前,请先看一下目录结构。

我的项目的目录结构是这样的:

\client 
    \main.html 
    \main.css 
    \main.js 
\imports 
    \lib 
     \todos 
      \todos.js 
\server 
    \main.js 

我已经创造了一个todos.jsMongo Object

export const Todos = new Mongo.Collections('todos');

这是工作的罚款。

现在client\main.js,我导入此对象,

import { Todos } from '\imports\lib\todos\todos.js';

注:我试过了相对和绝对两种类型的寻址。

我在此之后放了一个debugger并检查并且变量在那里。我可以在控制台上访问该变量。但只要我通过声明并将所有代码呈现在浏览器(谷歌浏览器)上,我就无法使用Todos。它给了我一个ReferenceError。错误是

未定义待办事项。

我知道有没有问题,直到浏览器加载,因为我检查了。我已经冲浪了很多。请帮帮我。

预先感谢您。

编辑1:如果需要,我使用的是Windows 7。

+0

当页面呈现时,您已超出范围。模块是“让我们说功能”,只是内部的范围,这些导入只是传入参数,而那些只在函数本身内部可见。你不能在外面访问这些数据,除非你把它们放到全局的东西里......比如窗口对象。 – insider

+0

我也看到了其他项目。他们没有使用任何窗口对象,我也能从控制台的变量中获取数据。你知道如何在不使用窗口的情况下完成任务吗? –

+0

我可以想到它通过一些变量或导入变量将范围“全局范围”(在index.js中使用import + babel)的唯一方法。模块的基本行为是导入的变量是作用域的,并且不能从全局范围的控制台访问。可能会有铬插件或其他一些“魔术”来使范围外。 – insider

回答

1

正如上面的评论所说,在文件/模块中声明或导入的变量不会在开发者控制台上结束。

,你能做些什么来让控制台上的东西是它导入到使用require

> require('/imports/lib/todos/todos.js') 

任何有效的绝对路径或包控制台将在这里工作

注:路径分隔符是总是* nix风格/

+0

Thankyou @frederick。这就是我一直在寻找的。 :) –

相关问题