0

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

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
  })
};

有什么问题?您需要更多信息吗?

4

1 回答 1

0

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

require('../session.js');
const Session = proxyquire('../session.js', ...);
于 2016-01-25T23:43:01.860 回答