摩卡无法在导入的代码中找到模块

Mocha can't find modules in imported code

我有一个 Phoenix 应用程序,正在尝试为 javascript 单元测试连接 Mocha。我想测试导入模块 'One' 的模块 'Two',但我不知道如何配置 Mocha 以找到模块一。

测试代码如下:

web/static/js/one.js

export var One = 1;

web/static/js/two.js

import {One} from "web/static/js/one";
export var Two = function () {return One + One;}

> test/js/two_test.js

import assert from 'assert';
import {Two} from "../../web/static/js/two";

describe('Two()', function() {
  it('returns value 2', function () {
    assert.equal(2, Two());
  });
});

这是我 运行 npm test

时的输出
home:~/elixir/optitrue$ npm test

> @ test /home/jon/elixir/optitrue
> mocha --compilers js:babel-register test/js/**/*.js

module.js:457
    throw err;
    ^

Error: Cannot find module 'web/static/js/one'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (two.js:1:1)
    at Module._compile (module.js:556:32)
    at loader (/home/jon/elixir/optitrue/node_modules/babel-register/lib/node.js:148:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/jon/elixir/optitrue/node_modules/babel-register/lib/node.js:158:7)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (two_test.js:2:1)
    at Module._compile (module.js:556:32)
    at loader (/home/jon/elixir/optitrue/node_modules/babel-register/lib/node.js:148:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/jon/elixir/optitrue/node_modules/babel-register/lib/node.js:158:7)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at /home/jon/elixir/optitrue/node_modules/mocha/lib/mocha.js:220:27
    at Array.forEach (native)
    at Mocha.loadFiles (/home/jon/elixir/optitrue/node_modules/mocha/lib/mocha.js:217:14)
    at Mocha.run (/home/jon/elixir/optitrue/node_modules/mocha/lib/mocha.js:485:10)
    at Object.<anonymous> (/home/jon/elixir/optitrue/node_modules/mocha/bin/_mocha:403:18)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.runMain (module.js:590:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

brunch.config

exports.config = {
  // See http://brunch.io/#documentation for docs.
  files: {
    javascripts: {
      joinTo: "js/app.js"
    },
    stylesheets: {
      joinTo: "css/app.css"
    },
    templates: {
      joinTo: "js/app.js"
    }
  },

  conventions: {
    assets: /^(web\/static\/assets)/
  },

  // Phoenix paths configuration
  paths: {
    watched: [
      "web/static",
      "test/static"
    ],

    // Where to compile files to
    public: "priv/static"
  },

  // Configure your plugins
  plugins: {
    babel: {
      // Do not use ES6 compiler in vendor code
      ignore: [/web\/static\/vendor/]
    }
  },

  modules: {
    autoRequire: {
      "js/app.js": ["web/static/js/app"]
    }
  },

  npm: {
    enabled: true,
    whitelist: ["phoenix", "phoenix_html"]
  }
};

错误很明显:

Error: Cannot find module 'web/static/js/one'

这意味着您提供的路径不起作用,请尝试使用相对路径:

import {One} from "./one";