要求和导入查找模块,但proxyquireify不?

时间:2015-12-30 14:45:46

标签: phantomjs ecmascript-6 karma-jasmine babeljs proxyquire

正如问题所述,在这些情况下,模块的要求/导入工作正常:

const Session = require('../session.js').default;

import Session from '../session.js');

但是我想替换session.js中需要的模块,所以我尝试在使用Proxyquireify的测试中这样做:

const proxyquire = require('proxyquireify')(require);
const someStub = () => { return {}; };
someStub['@noCallThru'] = true;
const Session = proxyquire('../session.js', {
  'some': someStub
}).default;

然后我收到错误,指出无法找到模块'../session.js'。

PhantomJS 1.9.8 (Linux 0.0.0) ERROR
  Error: Cannot find module '../session.js'

我的业力配置是:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['browserify', 'jasmine'],
    files: [
        'spec/**/*Spec.js'
    ],
    exclude: [
        'spec/**/PlayerSpec.js'
    ],
    preprocessors: {
      'spec/**/*Spec.js': ['browserify']
    },
    browserify: {
      debug: true,
      transform: ['babelify']
    },
    reporters: ['progress', 'dots'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
};

可能有什么不对?您还需要更多信息吗?

1 个答案:

答案 0 :(得分:0)

偶然发现了同样的问题。 注意到由于某种原因,proxyquireify没有在require个旁边注入proxyquire个电话,所以我最终只是自己做了,至少目前是这样。 尝试使用这样的东西:

require('../session.js');
const Session = proxyquire('../session.js', ...);