小编aza*_*gru的帖子

在编辑特定项目的文件时,在emacs上使用带有eslint的flycheck

通常,在emacs上编辑JavaScript时,我使用flycheck和jshint来检查语法错误.所以我全局安装了jshint,并在.emacs文件中使用以下命令在js-mode中使用flycheck:

(require 'flycheck)
(add-hook 'js-mode-hook
          (lambda () (flycheck-mode t)))
Run Code Online (Sandbox Code Playgroud)

但我也参与了一个项目,他们使用eslint来定义语法规则.我.dir-locals.el在该项目文件夹中有一个文件,目前只定义了所需的列表:

((nil . ((tab-width . 4)
         (js-indent-level . 4)))

 (js-mode . ((tab-width . 4)
             (js-indent-level . 4)))

 (html-mode . ((tab-width . 4)
               (sgml-basic-offset . 4))))
Run Code Online (Sandbox Code Playgroud)

是否有可能在.dir-locals.el文件的帮助下告诉emacs在此特定项目文件夹中使用带有eslint的flycheck,同时在其余项目中继续使用带有jshint的flycheck?我听说以下几行应该是从jshint切换到eslint的技巧,但我不完全确定在哪里添加它们:

(setq flycheck-disabled-checkers '(javascript-jshint))
(setq flycheck-checkers '(javascript-eslint))
Run Code Online (Sandbox Code Playgroud)

(你可以猜到,我对设置emacs并不是很好,所以我会非常感谢你的具体说明.)

emacs eslint flycheck

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

使用带循环的量角器填写从 Cucumber.js 表中获取数据的表单

(我看过这个 SO 讨论,但不确定如何将其应用于我的案例,所以我提出了一个新问题。希望它不是重复的)

我正在使用带有 Cucumber.js 的量角器测试用 Angular 编写的表单。

所以我想要做的是告诉量角器点击一个字段的标题(这是一个链接),然后,当该字段出现时,在其中输入一些文本,然后转到下一个字段的标题,等等。

这是我在黄瓜中的步骤:

When I fill the form with the following data
    | field            | content           |
    | First Name       | John              |
    | Last Name        | Doe               |
    | Address          | Some test address |
# and so forth
Run Code Online (Sandbox Code Playgroud)

这是对步骤定义的一个半心半意的尝试:

this.When(/^I fill the form with the following data$/, function (table, callback) {
    data = table.hashes();
    # that gives me an array of objects such as this one:
    # [ { …
Run Code Online (Sandbox Code Playgroud)

protractor cucumberjs

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

Eslint没有处理emacs,抱怨"Checker定义可能有缺陷"

我试图通过在.emacs中写这个来设置emac上的eslint:

(setq flycheck-disabled-checkers '(javascript-jshint))
(setq flycheck-checkers '(javascript-eslint))
(add-hook 'js-mode-hook
          (lambda ()
            (flycheck-mode t)
            (tern-mode t)
            ))
Run Code Online (Sandbox Code Playgroud)

尝试打开js文件时我得到的是这个错误消息:

在此输入图像描述

刚刚更新了eslint到最新版本(1.3.1)和emacs到最新版本(24.5).希望这会有所帮助.

它没有.

(我确实在~/.emacs.d/elpa目录中有很多旧的软件包,这些软件包是我在之前的emacs版本(24.3)上安装它们时留下的.但我不认为这会导致任何问题).

你能建议如何用eslint解决这个问题吗?

emacs eslint

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

当父级溢出时,父级的背景显示在子级边界半径周围:隐藏

这是我刚才提出的问题的扩展.然而这次问题更具体,更接近我正在努力的实际情况.

如果另一个元素中有一个元素,并且父元素和子元素都具有border-radius,并且父元素的背景与子元素不同,则它会在子元素的圆角周围可见.

如果父元素具有overflow: hidden属性,则问题会更加严重.然后,涉及使子元素的border-radius小于父元素的border-radius 的解决方案不再起作用.

CodePen上的示例:http://codepen.io/azangru/pen/pgmOvJ (观察子元素黑色背景下方的黄色背景).

HTML:

<div class="dark-bg">
  <div class="outer">
    <div class="middle">
      <div class="inner">
      </div>
    </div>
    <div class='some-text'>
      This is text. There can be quite a decent amount of text here, so the outer div needs to have overflow: hidden. Like this, you see?
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

.dark-bg {
  height: 100%;
  width: 100%;
  padding-top: 10px;
  background: black;
}

.outer …
Run Code Online (Sandbox Code Playgroud)

css css3

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

使用量角器检查 DOM 元素中的文本

这是我在使用 Protractor 测试 Angular 应用程序时尝试做的事情。我想得到某个元素,有点像这样:

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

然后获取它的 html,并检查它是否包含我希望它具有的文本。

我试图通过该cssContainingText方法首先获取此元素,但它并没有完全奏效(不知道为什么;可能是因为段落中的文本是动态生成的)。所以现在我只使用by.css定位器来获取这个元素。接下来,我正在检查它是否包含我正在测试的文本:

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。问题是,el是某种定位器对象,我不知道如何获取它找到的元素的 html 以针对此 html 进行测试。尝试过 .getText(),但没有成功。

有什么建议?

angularjs protractor cucumberjs

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

在Node.js中发送带有参数的http get请求

我正在尝试从Node.js应用程序向Rails服务器发送GET请求.目前,我正在使用这样的request模块:

var request = require("request");
var url = 'www.example.com'

function sendRequest(url){
  string = 'http://localhost:3000/my-api-controller?url=' + url;
  request.get(string, function(error, response, body){
    console.log(body);
  });
}
Run Code Online (Sandbox Code Playgroud)

这有效.但我想要的不是stringget请求构建,而是将请求的参数作为javascript对象传递(以类似jQuery的方式).在模块的wiki页面上有一个request使用这种语法的示例:

request.get('http://some.server.com/', {
  'auth': {
    'user': 'username',
    'pass': 'password',
    'sendImmediately': false
  }
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将此语法用于我的目的时:

function sendRequest(url){
  request.get('http://localhost:3000/my-api-controller', {url: url}, function(error, response, body){
    console.log(body);
  });
}
Run Code Online (Sandbox Code Playgroud)

url参数没有被发送.

所以我的问题是,我在这里做错了还是request模块不支持将get请求的参数作为javascript对象传递?如果没有,你能建议一个方便的Node模块吗?

httprequest node.js

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

Webpack,angular和ng-annotate-loader - 带有注释角文件的麻烦

我试图使用Webpack捆绑一个Angular应用程序,并在捆绑缩小后遇到问题.此语法具有依赖项的手动注释,可用于:

var app = angular.module('app', [
    'ui.router'
])
.config(['$locationProvider', '$stateProvider', ($locationProvider, $stateProvider) => {
    $locationProvider.html5Mode(true);
    $stateProvider
        .state('root', {
            url: '/',
            views: {
                '': {
                    template: '<p>Hello!</p>'
                }
            }
        });
}]);
Run Code Online (Sandbox Code Playgroud)

而此语法产生$injector:modulerr错误:

var app = angular.module('app', [
    'ui.router'
])
.config(($locationProvider, $stateProvider) => {
    $locationProvider.html5Mode(true);
    $stateProvider
        .state('root', {
            url: '/',
            views: {
                '': {
                    template: '<p>Hello!</p>'
                }
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

我正在为Webpack使用ng-annotate-loader.以下是配置文件的相关部分:

module: {
    loaders: [
        {
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'ng-annotate!babel?stage=1'
        },
Run Code Online (Sandbox Code Playgroud)

但这并不能解决[$injector:modulerr]错误.试图改变loader: 'ng-annotate!babel?stage=1'线loaders: …

angularjs webpack ng-annotate

4
推荐指数
1
解决办法
4698
查看次数

尝试使用 Webpack 构建 AMD 模块 — 出现“无法解析模块‘导出’”错误

我试图在一个使用 AMD 模块和 Require.js 的项目中引入 Webpack。项目结构的相关部分是这样的:

\n\n

在此输入图像描述

\n\n

(即项目根文件夹包含一个js包含所有应用程序脚本的文件夹,其入口点是 main.js,还有一个tools包含npm_modules我正在构建的 gulp 任务的文件夹)

\n\n

npm_modules(是的,我知道在项目的根目录中使用和会更简单gulpfile,但这就是我所拥有的结构)

\n\n

所以我试图从应用程序划分的 AMD 模块中构建一个 js 包。为了简化起见,让 \xe2\x80\x99s 说 main.js 文件具有以下代码:

\n\n
define([\n    \'jquery\'\n], function (\n    $\n) {\n    \'use strict\';\n\n    console.log($);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

这意味着我需要jquery./js/libs/vendor/jquery/dist/jquery.js

\n\n

这是webpack.js我编写的 webpack 配置(树形图上的文件):

\n\n
var path = require(\'path\');\n\nvar appModulesPath = path.resolve(\'../js\'); // gulpfile\xe2\x80\x99s process is run in ./tools folder\nvar nodeModulesPath = path.join(__dirname, \'..\', \'node_modules\');\nconsole.log(appModulesPath, \' and \', nodeModulesPath); // …
Run Code Online (Sandbox Code Playgroud)

webpack

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

Gulp:保留单个文件的目标文件夹结构

假设我们有以下文件夹结构:

rootDirectory
     ?
     ?
     ???a
     ?  ???a.txt
     ?
     ???b
     ?  ???a
     ?     ???a.txt
     ?
     ???c.txt
Run Code Online (Sandbox Code Playgroud)

同时,假设我们需要写一个咕嘟咕嘟的任务,将采取a.txta的文件夹,c.txt; 对它们执行一些操作,然后将它们传递到build目录中.我想要的是在build文件夹中复制的文件将其目录结构保存在build文件夹中(我不希望任务不应该处理的build文件进入文件夹),如下所示:

rootDirectory
     ?
     ?
     ???a
     ?  ???a.txt
     ?
     ???b
     ?  ???a
     ?     ???a.txt
     ?
     ???c.txt
     ?
     ???build
          ?
          ???a
          ?  ???a.txt
          ?          
          ???c.txt
Run Code Online (Sandbox Code Playgroud)

现在,这就是困扰我的.如果我指定特定文件的路径:

gulp.task('foo', function(){
    var files = [
        path.join(__dirname, 'c.txt'),
        path.join(__dirname, 'a/a.txt')
    ];
    gulp.src(files)
        .pipe(gulp.dest(path.join(__dirname, build));
});
Run Code Online (Sandbox Code Playgroud)

然后我将展平build目录中的文件夹结构.

但是,如果我使用globbing模式:

gulp.task('foo', function(){
    var files = [
        path.join(__dirname, '**/c.txt'),
        path.join(__dirname, …
Run Code Online (Sandbox Code Playgroud)

gulp

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

导入json文件时出现Webpack错误

这是一个破坏的简单测试用例:

首先,从Node保存一个json文件:

const fs = require('fs')

let test = {
  foo: [
    { 1: 'a'},
    { 2: 'b'}
  ]
};

fs.writeFileSync('./test.json', JSON.stringify(test), 'utf-8');
Run Code Online (Sandbox Code Playgroud)

然后,尝试将此json导入到由Webpack处理的js文件中(我使用的是最新版的Webpack,3.4.1):

import test from './test.json';

console.log(test);
Run Code Online (Sandbox Code Playgroud)

失败并显示以下错误:

ERROR in ./test.json                                       
Module build failed: SyntaxError: Unexpected token, expected ; (1:6)

> 1 | {"foo":[{"1":"a"},{"2":"b"}]}
Run Code Online (Sandbox Code Playgroud)

控制台输出所指向的令人反感的字符是“ foo”后的冒号。

我的Webpack配置非常简单,只有以下module选项:

  module: {
    rules: [
      {
        test: /\.js/,
        exclude: [ path.resolve(__dirname, 'node_modules') ],
        loader: 'babel-loader'
      },
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
Run Code Online (Sandbox Code Playgroud)

感到困惑,我打开了JSON加载程序页面,该页面通知我: …

javascript json webpack

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

无法连接到Vagrant中的Node.js.

我正在尝试使用Vagrant设置Node.js应用程序.在同一个Vagrant盒子里面还有一个Rails应用程序,工作正常.节点正在使用端口3001,所以这里是Vagrantfile中的配置设置:

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "puppetlabs/ubuntu-14.04-32-puppet"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4567, guest: 3000
  config.vm.network :forwarded_port, host: 5678, guest: 3001
Run Code Online (Sandbox Code Playgroud)

所以,我在Vagrant框中启动了Node.这表明在Vagrant框内它响应端口3001上的请求:

vagrant@localhost:~$ wget 127.0.0.1:3001
--2014-12-24 06:37:40--  http://127.0.0.1:3001/
Connecting to 127.0.0.1:3001... connected.
HTTP request sent, awaiting response... 200 OK
Run Code Online (Sandbox Code Playgroud)

来宾机器正在侦听端口3001:

$ sudo netstat -ltpn | grep 3001
tcp        0      0 127.0.0.1:3001          0.0.0.0:*               LISTEN      1422/node
Run Code Online (Sandbox Code Playgroud)

主机正在侦听端口5678:

sudo netstat -ltpn | grep 5678
tcp        0      0 0.0.0.0:5678            0.0.0.0:*               LISTEN      30966/VBoxHeadless
Run Code Online (Sandbox Code Playgroud)

然而,我无法从主机浏览器连接到该应用程序. …

portforwarding node.js vagrant

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

在emacs中设置每个项目的缩进变量

我的emacs设置为全局使用2个空格进行缩进:

(setq-default indent-tabs-mode nil)
(setq tab-width 2)
(setq js-indent-level 2)
(setq css-indent-offset 2)
Run Code Online (Sandbox Code Playgroud)

但我想贡献一个web项目(主要是html,css和js),它使用4个空格进行缩进.所以我想.dir-locals.el在项目目录中设置一个文件.该文件具有以下设置(随add-dir-local-variable命令添加):

((nil . ((tab-width . 4)
         (js-indent-level . 4)))

;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((js-mode
  (tab-width . 4)))
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((js-mode
  (js-indent-level . 4)))
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((html-mode
  (tab-width . 4))) …
Run Code Online (Sandbox Code Playgroud)

emacs indentation locals

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