小编Lou*_*uis的帖子

如何在没有webpack dev服务器的情况下使用webpack进行开发?

我目前正在使用require.js开发,所以我可以快速迭代(更改文件,刷新页面,之间没有构建步骤),但我使用它webpack作为构建工具,因为它优于r.js.我想完全摆脱require.js并在开发中使用webpack作为脚本加载器.我知道这正是webpack dev server为了什么,但我特别不想使用它.

理想情况下,我只需要包含某种webpack加载器<script>,将其指向我的webpack.js构建配置,然后让它完成工作.

javascript build node.js webpack

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

RequireJS何时需要调用异步?什么时候同步?

我使用RequireJS在我的一个项目中加载我的模块.我在网上看到了使用require呼叫要求模块的不同方式(而不是define).

让我们假设我有一个名为"JQuery"的模块,我想要它.我在示例中看到了两种方法:

  1. 这个:

    require(["JQuery"], function($){
       $.doSomething();
    })
    
    Run Code Online (Sandbox Code Playgroud)
  2. 还有这个:

    var $ = require("JQuery");
    $.doSomething();
    
    Run Code Online (Sandbox Code Playgroud)

我的问题是,如果负载是异常的,就像RequireJS文档说的那样,第二个约定如何工作呢?我如何确定$已定义并且第二行在第二行执行之前完成?

javascript asynchronous require requirejs

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

require.context:内联RegExp有效,var RegExp没有

如果声明SPEC Env,我试图有条件地加载我的测试:

var context = null
if (process.env.SPEC) {
  context = require.context('./tests', true, /.*?SearchInput.*/);
} 
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)

这非常有效.现在,如果我这样做

var context = null
if (process.env.SPEC) {
  var c = /.*?SearchInput.*/;
  context = require.context('./tests', true, c);
} 
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)

这根本不起作用,并且./中的所有文件都匹配('./tests'参数被忽略)

我错过了什么?我希望require.context函数的第三个参数是一个RegExp对象,所以我可以使用一个变量构造RegExp.

编辑1

这不起作用:

var context = null
if (process.env.SPEC) {
  var c = new RegExp(/.*?SearchInput.*/);
  context = require.context('./tests', true, c);
} 
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)

要测试这个,你可以编辑这个项目的tests.webpack.js文件:https: //github.com/erikras/react-redux-universal-hot-example

您需要允许SPEC变量通过webpack

  new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('test'),
        SPEC: JSON.stringify(process.env.SPEC || null)
      },
      __CLIENT__: true,
      __SERVER__: false,
      __DEVELOPMENT__: true, …
Run Code Online (Sandbox Code Playgroud)

javascript commonjs

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

访问AngularJs指令控制器

我在使用jasmine和karma testrunner进行单元测试的指令访问我的控制器时遇到了一些问题.该指令如下所示:

指示

angular.module('Common.accountSearch',['ngRoute'])

    .directive('accountSearch', [function() {
        return {
            controllerAs: 'ctrl',
            controller: function ($scope, $element, $routeParams, $http) {

                this.setAccount = function () {
                    var response = { AccountId : $scope.ctrl.searchedAccount.AccountId }
                    $scope.callback(response)
                }


                this.getAccounts = function(searchText){
                    return $http.get('/api/CRMAccounts', {
                        params: {
                            retrievalLimit: 10,
                            search: searchText
                        }
                    }).then(function(response){
                        return response.data;
                    });

                }

            },
            scope : {
                config : '=',
                values : '=',
                callback : '='
            },
            templateUrl : '/common/components/account-search/account-search.html',
            restrict : 'EAC'
        }
    }]);
Run Code Online (Sandbox Code Playgroud)

这是测试用例文件到目前为止我认为所有都是正确的(我希望):

测试用例文件:

    describe("Account search directive logic tests", …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine angularjs karma-runner

7
推荐指数
2
解决办法
3958
查看次数

我怎样才能让TypeScript知道我的函数不可能返回?

我有这个代码:

function A(): never {
  throw new Error("fail");
}

function B(): never {
  A();
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

index.ts(5,36): error TS2534: A function returning 'never' cannot have a reachable end point.
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?显然,A永远不会返回,因此B没有可达到的终点.

typescript typescript2.0

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

如何为node.js应用程序运行mocha测试的make命令

我创建了一个文件夹:MyFirstNodeAppl,在其中,我创建了一个测试文件夹,其中包含需要使用mocha框架运行的所有测试.

我还创建了一个名为MakeFile的make文件和内容详细信息,如下所述:

test:
      @./node_modules/.bin/mocha -u tdd

.PHONY: test
Run Code Online (Sandbox Code Playgroud)

package.json与test和MakeFile处于同一级别,其内容如下所述:

{
    "name": "nockmarket", 
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "jquery" : "1.7.3",
        "mocha": "1.3.0",
        "should": "1.0.0"     
    }
}
Run Code Online (Sandbox Code Playgroud)

设置完上述内容后,我使用node命令提示符窗口运行了npm install命令.现在我知道Mocha使用make来运行测试工具,而对于Windows用户,我们需要Cygwin,所以我将它安装在我的系统中.但我无法运行make命令来测试单元测试用例.

任何人都可以通过在上面提供指导来帮助我解决这个问题.

文件夹结构细节: 在此输入图像描述

mocha.js node.js

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

Karma发出require.js模块加载问题

我正试图在PyCharm中使用Karma测试运行器.我运行了karma init脚本,并选择从这个init脚本中包含Require.js插件.然后,当我尝试运行测试运行器时,我得到了这样的通知:Uncaught Error: Module name "assert" has not been loaded yet for context: _. Use require([])

所以我不得不使用"npm install assert"下载assert,然后在我的karma.conf.js文件中包含这样的一行:{pattern: 'node_modules/assert/assert.js', included: true},在files数组中.

但现在我得到了类似的抱怨:Uncaught Error: Module name "util/" has not been loaded yet for context: _. Use require([])虽然我使用'npm install util'安装,现在文件夹显示在我的node_modules文件夹下,但我所做的一切似乎都没有解决问题.

任何建议将不胜感激.

node.js pycharm requirejs karma-runner

6
推荐指数
0
解决办法
924
查看次数

在场景大纲之前运行一次特定步骤 - Python Behave

正如标题所示,我希望在场景大纲之前运行某些配置/环境设置步骤.我知道有Background这样做的场景,但Behave将场景大纲分成多个场景,从而为场景大纲中的每个输入运行背景.

这不是我想要的.由于某些原因,我无法提供我正在使用的代码,但是我将编写一个示例功能文件.

Background: Power up module and connect
Given the module is powered up
And I have a valid USB connection

Scenario Outline: Example
    When I read the arduino
    Then I get some <'output'>

Example: Outputs
| 'output' |
| Hi       |
| No       |
| Yes      |
Run Code Online (Sandbox Code Playgroud)

什么会发生在这种情况下是会舞动动力循环和检查每个输出USB接口Hi,No,Yes导致三个电源周期和三个连接检查

我想要的是使用一次电源循环并检查连接一次,然后运行所有三个测试.

我该怎么做呢?

python bdd scenarios python-behave

6
推荐指数
2
解决办法
5497
查看次数

节点包 - 是否可以在package.json中插入变量?

我有一个静态站点,使用编译Sass node-sass.

目前我正在使用Grunt来观看文件,但我觉得它太过分了,因为我可以使用它们的内置CLI.

所以我在package.json中添加:

// package.json
...
"scripts": {
  "sass": "node-sass -w input/dir -o output-dir/" 
}
Run Code Online (Sandbox Code Playgroud)

问题是,我需要require一个Sass框架模块(全局安装)--include-path.我可以在Gruntfile中执行此操作:

// Gruntfile.js
sass: {
  options: {
    includePaths: require("the-framework").includePaths()
  },
  ...
},
Run Code Online (Sandbox Code Playgroud)

所以我想到的第一件事是插入字符串,如:

// package.json
...
"scripts": {
  "sass": "node-sass -w input/dir -o output-dir/ --include-path " + require("the-framework").includePaths()
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它不起作用.然后脚本运行,但插值变量被忽略.

任何解决方案或替代?如果可能的话,我宁愿不创建额外的文件来存储变量.

谢谢

json command-line-interface node.js gruntjs

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

如何在Chrome中启动测试,控制台停靠在底部,而不是右边?

每当我在Chrome上启动Karma时,都会弹出一个新的Chrome窗口.当我在这个Chrome窗口上调出控制台时,控制台会出现在右侧.我更喜欢连接到底部的控制台,所以我总是把它搞定 - 这有点烦人.

如何让Karma启动Chrome,控制台停靠在底部?

javascript google-chrome google-chrome-devtools karma-runner karma-jasmine

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