javascript – 未捕获ReferenceError:require未定义

对于我正在开发的项目,我一直在使用 JavaScript库的大型程序.我的代码的主要逻辑分为多个commonjs模块.我使用谷歌闭包将模块组合到我的AngularJS应用程序中使用的一个输出js文件.

我遇到的问题是试图用testacular进行测试.我收到的错误是未捕获的ReferenceError:require没有定义.正在发生,因为不像google关闭,testacular不了解commonjs模块.有几个工作可以做,但我希望使其工作,而不必重组我的代码.

>我可以重组结构模块,使我不再使用commonjs.我不喜欢这样,因为感觉像倒退一样.我希望我的代码是模块化的.
>我可以在google关闭中编译的js上运行testacular.我不介意这样做,但是我没有能够触发所有事情来处理文件更改. Testacular可以重新运行文件更改,但我还没有看到任何使谷歌关闭重新编译更改.
>最后,我可以在testacular中启用commonjs模块.理想情况下,这是我想去的方式,但可能不是最简单的方法.

有其他人遇到类似的问题吗?我打算尝试不同的事情;我只是不想要任何东西.

javaclassstreamreader.spec.js:

"use strict"

var JavaClassstreamReader = require('../javaclassstreamreader.js').JavaClassstreamReader;

describe('javaclassstreamreader',function() {

  it('reader can be constructed',function() {
    var dataView = {
      byteLength : 0
    };
    //FIXME load dataView

    var reader = new JavaClassstreamReader(dataView);
    expect(reader.dataView).toBe(dataView);
    expect(reader.offset).toBe(0);
    expect(reader.maxOffset).toBe(0);
  });

});

javaclassstreamreader.js:

function JavaClassstreamReader(dataView,initialOffset,maxBytesToRead) {
  this.dataView = dataView;
  this.offset = initialOffset || 0;
  this.maxOffset = this.offset + (maxBytesToRead || this.dataView.byteLength);
}
//... code trucated ...

解决方法

似乎有一个 issue与Testacular.

你能尝试以下几点:

清除npm缓存:npm缓存清理>安装另一个版本的testacular:npm install -g testacular@0.5.6

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面