小编hen*_*enk的帖子

为什么我的调试器在视觉上以错误的方式停止?

我在用

METEOR@1.4.4.2
WebStorm@2017.1.1 
Chrome@58.0.3029.110 (64-bit)
macOS Sierra 10.12.5
ecmascript@0.7.3
ecmascript-runtime@0.3.15
Run Code Online (Sandbox Code Playgroud)

最近,调试器开始在错误的线路上停止,但只是在视觉上,大多数情况下它就像实际断点后面的8-14行.

例如

*橙色条表示谷歌浏览器中的断点

控制台输出:

在此输入图像描述

另外,正如您所看到的,某些行变暗,这意味着我无法在浏览器中设置断点.

WebStorm内部调试器中的行为是相同的.所以我认为这不是Chrome的错.看起来源映射已被破坏.我不知道是WebStorm,还是Meteor.在这种情况下,调试非常困难......

debugging google-chrome webstorm meteor

17
推荐指数
1
解决办法
3541
查看次数

如何将变量传递给GraphQL查询?

让我们假设我在React-Apollo中有以下GraphQL查询

const CurrentUserForLayout = gql`
  query CurrentUserForLayout($avatarID: Int!) {
    currentUser {
      avatar_url(avatarID: $avatarID)
    }
  }
`;

const ProfileWithData = graphql(CurrentUserForLayout, {
  options: { variables: { avatarID: 1 } },
})(Profile);
Run Code Online (Sandbox Code Playgroud)

现在,如果我想让我的React组件Profile更改avatarID,

我该怎么办?

我是React和GraphQl的新手,我不太明白这里的连接:

graphql(CurrentUserForLayout, {
      options: { variables: { avatarID: 1 } },
    })(Profile);
Run Code Online (Sandbox Code Playgroud)

我真的需要另一个父组件ProfileWithData 来传递另一个父组件avatarID吗?但是,如果ID由Profile组件操纵,我如何让Parent组件知道呢?

reactjs react-apollo

11
推荐指数
2
解决办法
1万
查看次数

如何在react-router v4中的根路由上设置可选参数?

假设我有以下两条路线:

    ...
    <Route exact path="/:param1?/" component={Home}/>
    <Route path="/news" component={News}/>
    ...
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试命中路由时/news,触发Home了参数的根路由param1...

我假设解决方案是在param1之前设置一个问号,/?param1这样它就可以从路由中保存,但我无法弄清楚如何在react-router v4中执行此操作

react-router react-router-v4

8
推荐指数
1
解决办法
4781
查看次数

启动Meteor App时出错:对目录进行非法操作,取消链接".../dev_bundle"

尝试使用以下命令在我的服务器上启动应用程序时出现此错误:

meteor
Run Code Online (Sandbox Code Playgroud)

错误:

Error: EISDIR: illegal operation on a directory, unlink '/home/.../.../myapp/.meteor                   /local/dev_bundle'
    at Error (native)
    at Object.fs.unlinkSync (fs.js:932:18)
    at exports.makeLink (/tools/cli/dev-bundle-links.js:20:8)
    at [object Object].ensureDevBundleLink (/tools/project-context.js:1416:7)
    at [object Object]._readFile (/tools/project-context.js:1350:10)
    at new exports.ReleaseFile (/tools/project-context.js:1300:8)
    at /tools/cli/main.js:825:22
Run Code Online (Sandbox Code Playgroud)

我的应用程序运行正常.赢得.机.

我不知道导致错误的是什么,请帮忙.

meteor

6
推荐指数
1
解决办法
2078
查看次数

用 CSS 和一点 JS 来设计输入类型文件,这样可以吗?

我想要做的是添加一个用于上传文件的按钮,我可以设置样式并显示所选文件的名称。

我已经搜索了很多,我搜索的越多,我发现的不同解决方案就越多。我发现,你不能直接设置输入的样式,因为你不能...... :(。

最后,我从每个解决方案中挑选了一点,并得出以下结论:

我在标签中为 input[type file] 设置了一个 span,并通过 display:none; 隐藏了输入。

现在我可以根据我的需要设置跨度的样式,并在单击时调用输入。在最后的小 JS 中,获取输入的值(所选文件的名称是什么)并将其显示在样式按钮上的跨文本中。

但看看你自己:

#input-file {
    display: none;
    }

.upload-btn {

    display: block;
    text-align: center;
    margin: 20px auto 20px;
    width: 50%;
    height: 30px;
    background-color: #fcff7f;
    line-height: 30px;

    }

.upload-btn:hover {
    background-color: #c39d5a;
    color: white;
    cursor: pointer;
    }
Run Code Online (Sandbox Code Playgroud)
<label class="upload-btn">
  <input type="file" id="input-file" onchange="changeText()" />
  <span id="selectedFileName">Browse</span>
</label>


<script type="text/javascript">
  function changeText() {
    var y = document.getElementById("input-file").value;
    document.getElementById("selectedFileName").innerHTML = y;
  }
</script>
Run Code Online (Sandbox Code Playgroud)

我想知道的是,这有什么问题?就我而言,它非常简单,简单到我“还”不明白为什么我在互联网上找到的所有解决方案都更加困难。他们总是尝试使用虚假输入,不透明等等。

所以请非常有经验的人告诉我是否可以像这样使用它,或者我必须改变它吗?要什么?

谢谢;) 以及很多英语不好的借口。

html javascript css

5
推荐指数
0
解决办法
8062
查看次数

如何为GraphQL服务器设计以下解析器?

我正在使用带有mysql和sequelize的meteor的react-apollo,我仍然是JS的初学者.假设我的apollo-server上有以下解析器函数:

 export default resolvers = {
     Query: {
         posts(_, args){
             return Post.findAndCountAll({ where: args   });
         },
         numberOfPosts(){
             return /// the number of selected posts
         }
     }
Run Code Online (Sandbox Code Playgroud)

我想从数据库中选择满足某些条件的一些数据,然后计算所选行的数量并在"numberOfPosts"字段中返回它们. findAndCountAll()返回一个对象,其中包含选定的行和计数.我想让我post()只返回选定的行,而我的numberOfPosts()只返回所选帖子的计数.现在,两者都是由posts()返回的.

我的架构是:

 type Post {
  id: Int
  date: Float
  text: String
}

 type NumberOfPosts{
  total: Int
  filtered: Int
}

type Query {
  posts(
   id: Ind,
   offset: Int,
   limit: Int,
   filter: String): [Post]
  numberOfPosts:[NumberOfPosts] 
}

schema {
  query: Query
}
Run Code Online (Sandbox Code Playgroud)

目标是以下列格式接收数据:

{
  "data": {
    "numberOfPosts": [
      {
        "total": 1000,
        "filtered": 21 …
Run Code Online (Sandbox Code Playgroud)

javascript graphql graphql-js apollo-server

5
推荐指数
1
解决办法
3571
查看次数

如何在where子句中使用带有可选include的运算符?

我有以下型号:

AuthorModel.hasMany(BookModel);
BookModel.belongsTo(AuthorModel);
Run Code Online (Sandbox Code Playgroud)

有些作者没有书.

我想选择一个作者,他的一本书的名字或头衔与搜索字符串相匹配.

我可以通过以下声明来实现这一点,但仅限于在BookModel中拥有书籍的作者

       Author.findOne({
         include: [{
            model: Book,
            where: {
              [Op.or]: [
                  {'$author.name$': 'search string'},
                  { title: 'search string'}
                 ]
               },
             }]
           })
Run Code Online (Sandbox Code Playgroud)

这给了我或多或少的以下mysql查询:

SELECT 
    `author`.`name`,
    `book`.`title`
FROM `author` INNER JOIN `book` 
     ON `author`.`id` = `book`.`authorId`
     AND ( `author`.`name` = 'search string' OR `book`.`title` = 'search string');
Run Code Online (Sandbox Code Playgroud)

这里的问题是,如果作者没有书籍,那么结果是空的.即使有作者符合搜索条件.

我试图将include设置为required: false,给出了一个left outer join.在这种情况下,我得到一些不匹配的结果.省略了where子句.

我如何更改sequelize查询,或者什么是正确的mysql查询?

mysql sequelize.js

5
推荐指数
1
解决办法
564
查看次数

Electron-builder dist 文件夹中的安装程序和 win-unpacked 文件夹有什么区别?

我是电子新手,试图了解分布概念的基础知识。

我已经为 Windows 构建了一个基本的电子应用程序electron-builder

生成的dist文件夹包含一个安装程序,My App Setup 0.1.0.exe以及一个win-unpacked带有My App.exe

安装程序首先打开一个安装窗口,在某个地方安装一些东西,然后运行我的应用程序。

My App.exe直接运行我的应用程序。

  1. 安装程序的确切目的是什么?
  2. 它真的安装了什么东西以及安装在哪里吗?
  3. win-unpacked 文件夹的用途是什么?
  4. 哪一个是用于分发的?
  5. .blockmap为了什么?

在此输入图像描述

electron electron-builder

5
推荐指数
1
解决办法
2201
查看次数

什么时候必须关闭mysqli(数据库)连接?

现在我有一个connect.php文件,例如:

$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";

$con = new mysqli(
    $mysql_host,
    $mysql_user,
    $mysql_password,
    $mysql_database
);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}
Run Code Online (Sandbox Code Playgroud)

在使用MySQL查询的所有其他php文件中,我使用“ include'connect.php';”

对于W3Schools上的Instance,它们为每个查询创建一个新连接,然后在使用后将其关闭。参见此处:w3schools.com:我不确定他们是否只是出于展示目的而这样做,还是这样做的最佳实践。

问题是,什么是最佳实践?每次选择后我都必须关闭连接,然后为下一个查询建立一个新连接吗?如果没有,我最后什么时候必须关闭连接?在带有所有查询的php文件的末尾?

谢谢

php mysql

3
推荐指数
1
解决办法
3495
查看次数

您应该在每个“test()/it()”块中还是在全局中渲染组件/选择元素?

react-testing-library对其元素执行一些测试之前,您必须渲染您的反应组件。

  1. 对于同一组件的多次测试,是否应该避免多次渲染该组件?或者你必须在每个 test()/it()块中渲染它?

  2. 您应该选择每个块中的组件元素(例如按钮)test()/it(),还是应该取消选择并仅选择一次?

  3. 它对测试的执行时间有影响吗?

  4. 其中一种方法是最佳实践/反模式吗?

  5. 为什么最后一个例子失败了?

对于基本组件我有以下测试方法:

function MyComponent() {
  return (
    <>
      <button disabled>test</button>
      <button disabled>another button</button>
    </>
  );
}
Run Code Online (Sandbox Code Playgroud)

例如

describe("MyComponent", () => {
  it("renders", async () => {
    const { getByRole } = render(<MyComponent />);
    const button = getByRole("button", { name: /test/i });
    expect(button).toBeInTheDocument();
  });

  it("is disabled", async () => {
    // repetetive render and select, should be avoided or adopted?
    const { getByRole } = render(<MyComponent />);
    const button = …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs react-testing-library

3
推荐指数
1
解决办法
1519
查看次数

Meteor.js 中节点文件系统 (fs.writeFile) 默认写入何处?

我按以下方式使用 fs.writeFile 方法:

        fs = require('fs');
        fs.writeFile('message.txt', 'Hello Node.js', (err) => {
            console.log('It\'s saved!');

            fs.readFile('message.txt', function (data) {

                console.log("Asynchronous read: " + data.toString());
            });
        });
Run Code Online (Sandbox Code Playgroud)

输出:

It's saved!
Asynchronous read: Hello Node.js
Run Code Online (Sandbox Code Playgroud)

由于我收到了预期的输出,因此我假设该文件message.txt是在某处创建的,并且我实际上正在对其进行写入和读取。但我在我的系统上找不到它。那么是在哪里message.txt创建的呢?

我正在使用 Meteor.js

javascript node.js meteor

2
推荐指数
1
解决办法
2278
查看次数

需要解释"+(x> 180)"或"+()"

我在一些javascript代码中发现了这个: +(x > 180)

如果x小于180,则返回此值似乎为0;对于x> 180,则返回1.

它是一个简单的比较平滑的方式,但我找不到任何相关的文档,我不知道它来自哪里(javascript/jquery /其他库).所以我不知道什么时候可以使用它.

我的意思是,我知道x> 180是什么,但是如何围绕它简单的"+()",替换整个"if(x> 180){return 1;} else {return 0}.

有人可以给我一个解释或链接到这个声明的ducumentation.谢谢

javascript

0
推荐指数
1
解决办法
42
查看次数

服务私人路线的正确方法是什么?

我试图了解以下安全方面:

如果我理解正确,在 PHP 中,URL 直接路由到服务器上的特定文件。例如https://mypage.com/secretFunctions.php将路由到secretFunctions.php. 如果我通过基本身份验证保护此路由,身份验证将在处理文件并将其提供给客户端之前进行。结果,只有经过身份验证的用户才能看到呈现的内容。

如果是客户端 node.js 应用程序,整个 App.js 代码将发送到客户端并在那里进行处理。URL 始终指向同一个文件。该文件中定义的路由决定了将执行和呈现的代码片段。即使我通过任何类型的身份验证保护任何特定路由,用户仍将获得整个代码。

有没有办法防止这种情况?防止客户端收到私有路由的私有代码,只要不认证就行?

node.js

-1
推荐指数
1
解决办法
429
查看次数