除非我在 Hapi 中创建插件时使用完整路径,否则找不到模块
Module not found unless I use a complete path when creating plugins in 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)
它在我的插件内部不起作用,但在我的插件外部,以这种方式要求文件工作正常。
可能是什么问题?我该如何解决?
提前致谢。
问题解决:
const indexController = require('../../controllers/IndexController.js');
我的项目根文件夹在 2 个目录之外,因此 ../../
为我工作。
我正在尝试熟悉 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)
它在我的插件内部不起作用,但在我的插件外部,以这种方式要求文件工作正常。
可能是什么问题?我该如何解决?
提前致谢。
问题解决:
const indexController = require('../../controllers/IndexController.js');
我的项目根文件夹在 2 个目录之外,因此 ../../
为我工作。