首页 > 解决方案 > 除非我在 Hapi 中创建插件时使用完整路径,否则找不到模块

问题描述

我正在尝试熟悉 HapiJS 并且这周一直在玩它,我遇到了插件和路径的问题。当我需要文件时,我收到关于我指定的路径的错误。我不能使用“ ./ ”而不出错。克服错误的唯一方法是使用完整的完整路径。

这是我的有效代码:

'use strict';

const indexController = require('/Users/mylaptop/docker-node/controllers/IndexController.js');

module.exports.plugin = {
    name: 'myPlugin',
    version: '1.0.0',
    register: async function (server, options) {

        // Create a route for example
        server.route({
            method:'GET',
            path:'/test',
            handler: function (request, h) {

                return indexController.loadIndex(h);
              }
        });

    }
};

但是,如果我尝试以这种方式要求我的 IndexController 文件:

const indexController = require('./controllers/IndexController.js');

然后我得到这个错误:

internal/modules/cjs/loader.js:583
    throw err;
    ^

Error: Cannot find module '/Users/mylaptop/docker-node/Users/mylaptop/docker-node/controllers/IndexController.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/Users/mylaptop/docker-node/config/routes/index.js:5:25)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

它在我的插件内部不起作用,但在我的插件外部,以这种方式要求文件工作正常。

可能是什么问题呢?我该如何解决?

提前致谢。

标签: javascriptnode.jsnode-moduleshapijs

解决方案


问题解决了:

const indexController = require('../../controllers/IndexController.js');

我的项目根文件夹在 2 个目录之外,因此../../为我工作。


推荐阅读