通常,在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并不是很好,所以我会非常感谢你的具体说明.)
(我看过这个 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) 我试图通过在.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解决这个问题吗?
这是我刚才提出的问题的扩展.然而这次问题更具体,更接近我正在努力的实际情况.
如果另一个元素中有一个元素,并且父元素和子元素都具有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) 这是我在使用 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(),但没有成功。
有什么建议?
我正在尝试从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)
这有效.但我想要的不是string为get请求构建,而是将请求的参数作为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模块吗?
我试图使用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: …
我试图在一个使用 AMD 模块和 Require.js 的项目中引入 Webpack。项目结构的相关部分是这样的:
\n\n\n\n(即项目根文件夹包含一个js包含所有应用程序脚本的文件夹,其入口点是 main.js,还有一个tools包含npm_modules我正在构建的 gulp 任务的文件夹)
npm_modules(是的,我知道在项目的根目录中使用和会更简单gulpfile,但这就是我所拥有的结构)
所以我试图从应用程序划分的 AMD 模块中构建一个 js 包。为了简化起见,让 \xe2\x80\x99s 说 main.js 文件具有以下代码:
\n\ndefine([\n \'jquery\'\n], function (\n $\n) {\n \'use strict\';\n\n console.log($);\n});\nRun Code Online (Sandbox Code Playgroud)\n\n这意味着我需要jquery从./js/libs/vendor/jquery/dist/jquery.js
这是webpack.js我编写的 webpack 配置(树形图上的文件):
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) 假设我们有以下文件夹结构:
rootDirectory
?
?
???a
? ???a.txt
?
???b
? ???a
? ???a.txt
?
???c.txt
Run Code Online (Sandbox Code Playgroud)
同时,假设我们需要写一个咕嘟咕嘟的任务,将采取a.txt中a的文件夹,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) 这是一个破坏的简单测试用例:
首先,从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加载程序页面,该页面通知我: …
我正在尝试使用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)
然而,我无法从主机浏览器连接到该应用程序. …
我的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 ×3
webpack ×3
angularjs ×2
cucumberjs ×2
eslint ×2
node.js ×2
protractor ×2
css ×1
css3 ×1
flycheck ×1
gulp ×1
httprequest ×1
indentation ×1
javascript ×1
json ×1
locals ×1
ng-annotate ×1
vagrant ×1