当我尝试导入子目录中的模块时,出现错误 [ERR_INVALID_MODULE_SPECIFIER]
主要代码:
const triggers = [];
await getFiles("./triggers", triggers)
triggers.map((f) => {
return {
name: f.replace(".js", ""),
module: import(`${f}`)
}
})
获取文件代码:
export async function getFiles(dir, array){
fs.readdirSync(dir).map(f => {
const absl = (path.join(dir, f))
if(fs.statSync(absl).isDirectory()) return getFiles(absl, array)
else return array.push(absl);
})
}
有什么数组:
[
'triggers\\actions\\btn-main-menu.js',
'triggers\\actions\\btn-my-cabinet-change-email.js',
'triggers\\actions\\btn-my-cabinet-change-password.js',
'triggers\\actions\\btn-service-update-information.js',
'triggers\\actions\\btn-service.js',
'triggers\\actions\\btn-start-commands.js',
'triggers\\actions\\btn-start-my-cabinet.js',
'triggers\\actions\\btn-start-my-services.js',
'triggers\\commands\\start.js'
]
错误代码:
Invalid module "triggers\actions\btn-main-menu.js" is not a valid package name imported from C:\Users\Fess\Desktop\workSpace\pterodactyl\app.js
改变路径, 将
module: import(${f})
更改为 module: import(
。/${f})
将正斜杠替换为反斜杠
文件系统中的相对模块需要使用明确指示的路径(例如,前导
.
或 ..
,然后是路径分隔符)。
如果不这样做,您就是在要求 Node 加载真实模块的子导出。例如。
triggers\actions\btn-main-menu.js
将尝试从 actions\btn-main-menu.js
模块加载 triggers
导出。
或者,通过使用解析函数来使用绝对路径:
const absl = path.resolve(path.join(...))
(现在,即使您的变量声明它是绝对位置,但这根本不是)。