标签: coffeescript

调试mocha测试的最小阻力路径是什么?

编辑2016年11月:Node现在有一个内置的调试器,您可以从中开始--inspect.这个答案解释了它:https://stackoverflow.com/a/39901169/30946.

我正在用coffeescript建立一个摩卡测试.在测试的顶部,我有:

require "../assets/js/theObject.coffee"
debugger
ss = new TheObject()
Run Code Online (Sandbox Code Playgroud)

我想停止在调试器行上,因为theObject.coffee没有加载对象.我正在使用节点检查器,它可以工作,sorta.

我的过程是:

  1. 启动节点检查器
  2. 在命令行运行测试 mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
  3. 转到节点检查器页面,如果它已经打开则刷新它
  4. 等待文件theObject.coffee加载,然后在正确的行上放置一个断点

必须有一个更简单的方法.看起来我应该能够运行一个调试器并让它停在那个调试器行上,但我无法找到它.

我有WebStorm,它有一个调试器(本文讨论设置它来运行mocha测试,但它没有帮助我),但是当我启动它时,它失败了.在WebStorm调试窗口中运行的命令是:

"C:\Program Files\nodejs\node.exe" --debug-brk=64232 C:\Users\jcollum\AppData\Roaming\npm\_mocha

C:\Users\jcollum\AppData\Roaming\npm\_mocha:2
basedir=`dirname "$0"`
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能是一个特定于Windows的问题.

环境:Windows 7,Webstorm,节点0.8.16,mocha 1.7.4,git-bash

问题是:如果你是从头开始使用Mocha,那么调试器的最简单方法是什么才能轻松地停在调试器线上?这里的关键字很简单.

编辑:自从问这个我已经停止使用Windows并在Ubuntu工作.我的mocha调试过程(我不经常使用)是一样的.

debugging unit-testing mocha.js node.js coffeescript

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

如何在Rails 3.1应用程序中完全禁用CoffeeScript?

在生成新控制器的那一刻,Rails也.js.coffee为控制器生成一个文件.由于我不使用CoffeeScript,我希望Rails .js为我生成文件.

是否足以注释掉coffee-railsgem以完全禁用Rails 3.1应用程序中的CofeeScript?

coffeescript ruby-on-rails-3.1

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

CoffeeScript - 不允许在Angular表达式中引用DOM节点

我的主要问题很简单:

在控制器或指令中进行DOM操作时出错,但功能完美.

Error: [$parse:isecdom] Referencing DOM nodes in Angular expressions is disallowed! Expression: open()
Run Code Online (Sandbox Code Playgroud)

我想忽略这些错误,并从功能角度(不是设计角度)确认这样做是安全的

为了简单起见,我很感激这个问题的一个简单答案,而不会质疑我是否需要这样做.


现在,如果有人想要更详细地讨论,我有这个要点:https: //gist.github.com/kosz/04f916a5725d85045be5(依赖关系:angular,jquery,jquery ui对话框),我正在遇到这个代码的行为.

到目前为止,我已经尽了最大的努力来摆脱这个错误,并根据我所阅读的内容和文档,在指令中鼓励使用角度的dom操作.

所以我已经使代码使用了一个指令,但是,它仍然会引发错误!

如您所见,我正在使用Jquery UI并为每个列表项显示它,如果用户想要编辑的话.我不是直接操作dom,但是,我需要一种方法来控制jQuery ui Dialog的关闭/打开事件,这不会使Angular填充我的控制台有错误.

我们非常感谢您对此的任何见解.

请注意,我知道角度ui bootstrap模式,并且我不能在这个特定场景中使用它.

javascript jquery dom coffeescript angularjs

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

CoffeeScript如何用CoffeeScript编写?

因此,作为一个新的Web程序员(背景mostely在C,C++和Python),没有JavaScript的经验(或渴望体验一下吧,根据我所看到的),我一直在做CoffeeScript的一些前兆研究,我真的喜欢什么我知道了.我注意到的一个很酷的细微差别就是CoffeeScript是用CoffeeScript编写的,这很酷......但我真的不明白这是怎么回事.不幸的是,在我上一期的高级计算机科学课程中,我选择使用网络安全而不是编译器.

我听说有人在目标语言编写语言使用现有的编译器用于该语言来诠释,但我不能挖就如何实现这一可能的工作,因为这是第一次执行的任何信息.

我的猜测是,可能照顾放下一些初步框架的构建的嵌入式shell脚本的自我指涉的(没有这个词形容恰当这种行为?)语言?

compiler-construction bootstrapping interpreter coffeescript

38
推荐指数
2
解决办法
2873
查看次数

如何使用mongoose findOne

我有以下架构(道歉,它是在coffeescript)

Schema = mongoose.Schema

AuthS = new Schema
    auth:   {type: String, unique: true}
    nick:   String
    time:   Date
Auth = mongoose.model 'Auth', AuthS
Run Code Online (Sandbox Code Playgroud)

我只想恢复一条肯定在我的数据库中的记录:

Auth.findOne({nick: 'noname'}, function(obj) { console.log(obj); });
Run Code Online (Sandbox Code Playgroud)

很不幸,这始终记录null.db.auths.findOne({nick: 'noname'})在mongo shell中总是返回一个值.到底是怎么回事?

mongoose mongodb node.js coffeescript

38
推荐指数
3
解决办法
10万
查看次数

如何在coffeescript中的特定范围内声明变量?

我正在尝试在coffeescript中编写一个使用beforeEach块的茉莉花测试.这遇到了coffeescript的变量范围问题.这是我想写的:

describe 'PhoneDetailCtrl', () ->
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    $browser.xhr.expectGET('phones/xyz.json').respond({name:'phone xyz'})
    ctrl = scope.$new(PhoneDetailCtrl)

    expect(ctrl.phone).toEqualData({})
    $browser.xhr.flush()

    expect(ctrl.phone).toEqualData({name:'phone xyz'})
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为scope$browservar在最里面的范围内声明.也就是说,一旦进入beforeEach,然后又在it块中.我可以通过初始化来强制在正确的范围内声明变量,但这看起来很奇怪:

describe 'PhoneDetailCtrl', () ->
  $browser = {}
  scope = {}
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    ...
Run Code Online (Sandbox Code Playgroud)

这可行,但它编译的JavaScript实际上是

describe('PhoneListCtrl', function() {
  var $browser, …
Run Code Online (Sandbox Code Playgroud)

coffeescript jasmine

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

'@'符号在Javascript,Coffeescript或Jquery中有特殊含义吗?

我有一些看起来像的代码

self = @
Run Code Online (Sandbox Code Playgroud)

然后使用@someMethodName或self.someMethodName

@有一些特殊含义吗?

javascript jquery coffeescript

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

如何在Mongoose模型中定义方法?

我的locationsModel档案:

mongoose = require 'mongoose'
threeTaps = require '../modules/threeTaps'

Schema = mongoose.Schema
ObjectId = Schema.ObjectId

LocationSchema =
  latitude: String
  longitude: String
  locationText: String

Location = new Schema LocationSchema

Location.methods.testFunc = (callback) ->
  console.log 'in test'


mongoose.model('Location', Location);
Run Code Online (Sandbox Code Playgroud)

要打电话给我,我正在使用:

myLocation.testFunc {locationText: locationText}, (err, results) ->
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

TypeError: Object function model() {
    Model.apply(this, arguments);
  } has no method 'testFunc'
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js coffeescript

37
推荐指数
3
解决办法
5万
查看次数

未捕获的TypeError:无法设置undefined的属性"position"

我有这个代码给我奇怪的错误信息

Uncaught TypeError: Cannot set property 'position' of undefined
Run Code Online (Sandbox Code Playgroud)

这是一个jQuery插件的内部,用于在弹出窗口中显示谷歌地图.我在其他地方使用代码,它工作正常 - 这里唯一的区别似乎是我现在在弹出窗口中使用它.我错过了范围问题吗?像geocoderParams和latlng这样的所有变量都应该填充.谷歌搜索错误消息没有任何价值.

调用google.maps.Map()时会触发错误消息.

self = $(this)
self.hide()

geocoder = new google.maps.Geocoder
geocoderParams =
  address: self.data('address') || settings.address
  region: settings.region

results = geocoder.geocode geocoderParams, (results, status) ->

if status == google.maps.GeocoderStatus.OK
  latlng = results[0].geometry.location

  mapOptions =
    mapTypeControl: false
    overviewMapControl: false
    zoom: settings.zoomLevel
    center: latlng
    mapTypeId: google.maps.MapTypeId.ROADMAP

  map = new google.maps.Map(self, mapOptions)

self.show()
Run Code Online (Sandbox Code Playgroud)

javascript google-maps google-maps-api-3 coffeescript

37
推荐指数
3
解决办法
5万
查看次数

找不到模块'咖啡脚本'

尝试使用TowerJS设置基本站点作为测试,但在运行脚手架生成器时遇到此错误.

Macbook:app john$ tower generate scaffold Post title:string body:text belongsTo:user
{ [Error: Cannot find module 'coffee-script'] code: 'MODULE_NOT_FOUND' }

module.js:340
    throw err;
          ^
Error: Cannot find module '/Users/john/Sites/tower/app/app/config/shared/application'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Function.Tower.Application.Application.reopenClass.instance (/usr/local/lib/node_modules/tower/lib/tower-application/server/application.js:42:15)
    at _.extend.namespace (/usr/local/lib/node_modules/tower/lib/tower-support/shared/shared.js:218:30)
    at GeneratorScaffoldGenerator.Tower.GeneratorResources.buildApp (/usr/local/lib/node_modules/tower/lib/tower-generator/server/resources.js:273:66)
    at GeneratorScaffoldGenerator.Generator (/usr/local/lib/node_modules/tower/lib/tower-generator/server/generator.js:57:23)
    at new GeneratorScaffoldGenerator (/usr/local/lib/node_modules/tower/lib/tower-generator/server/generators/tower/scaffold/scaffoldGenerator.js:21:61)
    at Function.run (/usr/local/lib/node_modules/tower/lib/tower-generator/server/generator.js:22:12)
Run Code Online (Sandbox Code Playgroud)

javascript node.js coffeescript towerjs

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