Node.js 节点JS错误:找不到模块'/服务';

Node.js 节点JS错误:找不到模块'/服务';,node.js,proxyquire,Node.js,Proxyquire,我正在尝试使用sinon创建存根来运行测试,但它的抛出错误。 它试图找到一个模块服务,并说找不到该模块,但我将services.js与test放在同一个文件夹中。所以我不知道为什么它会失败。 有人能告诉我密码有什么问题吗 1) the car-lookup controller "before each" hook for "should return filtered TAP response": Error: Cannot find module './services' fro

我正在尝试使用sinon创建存根来运行测试,但它的抛出错误。 它试图找到一个模块服务,并说找不到该模块,但我将services.js与test放在同一个文件夹中。所以我不知道为什么它会失败。 有人能告诉我密码有什么问题吗

 1) the car-lookup controller "before each" hook for "should return filtered TAP response":
     Error: Cannot find module './services' from 'C:\nodejsworkspace\olive\server\api\car-lookup'
      at Function.module.exports [as sync] (node_modules\proxyquire\node_modules\resolve\lib\sync.js:40:15)
      at Proxyquire._resolveModule (node_modules\proxyquire\lib\proxyquire.js:137:20)
      at Proxyquire.<anonymous> (node_modules\proxyquire\lib\proxyquire.js:205:35)
      at Array.reduce (<anonymous>)
      at Proxyquire._withoutCache (node_modules\proxyquire\lib\proxyquire.js:204:6)
      at Proxyquire.load (node_modules\proxyquire\lib\proxyquire.js:129:15)
      at Context.<anonymous> (test\unit\server\api\car-lookup\car-lookup.controller.test.js:30:18)

下面是我认为服务是如何从car-lookup.controller.js导出的

下面是carlookup controller.js
如果您在第一行中看到,它正在尝试导入服务,而服务不是直接的js文件。我在.././目录中有一个index.js文件,这就是第一行所指的。目录结构也在下面。请告知

>server
  > api
    > car-lookup
      >car-lookup.controller.js

>server 
 >services 
   >index.js

确保正确导出文件服务

您的反斜杠目录导航可以使用NodeJS内置路径功能简化,您可以提供如何导出服务文件。您好,@ambianBeing我已经更新了关于如何导入模块的问题。请检查一下。@Jackson2489你已经把问题解决了。您不能要求目录,它不应该是
require('../../services/index.js')@ambianBeing即使我使用它,我也会得到同样的错误找不到模块.././services/index.js``您好,William,我已经更新了关于如何导入模块的问题。请检查一下。
>server
  > api
    > car-lookup
      >car-lookup.controller.js

>server 
 >services 
   >index.js
'use strict';
const services = require('../../services');
const { ApiError, ValidationError } = require('../../errors');
const AccountModel = require('../../models/account-model');

const lookupAccount = (req, res, next) => {

  const retrieveAccount = (oktaToken) => { 
    return services.tapClient.retrieveAccount(req.body);
  };



  const sendResponse = (account) => {
    res.send(new AccountModel(account));
  };

  const onError = (err) => {
    next(err instanceof ValidationError ?
      new ApiError(err, 400) :
      err);
  };

  retrive()
    .then(retrieveAccount)
    .then(sendResponse)
    .catch(onError);
};

module.exports = {
  lookupAccount
};