NextJS: __dirname преобразуется в node_modules/

#node.js #typescript #webpack #next.js #webpack-5

Вопрос:

Я использую библиотеку в NextJS, которая используется __dirname для проверки текущего пути к файлу, но __dirname разрешает node_modules , а не текущий файл, вызывающий функцию.

Вот минимальный пример:

 // ./node_modules/check_api/lib/index.js function checkCurrentFile(){  if (!__dirname.endsWith("/api")) {  throw new Error("Not api directory");  }   console.error("Invalid dir: ", __dirname); }  
 // ./pages/api/[hello].ts export default handler(req: NextApiRequest, res: NextApiResponse){  checkCurrentFile();   res.send("Hello"); }  

Может привести к:

 Error: Invalid dir: ./node_modules/check_api/lib  

Я обновил свой next.config.js до:

 module.exports = {  reactStrictMode: true,  webpack5: true,  webpack: (config) =gt; {  config.resolve.fallback = { __dirname: false }  return config;  }, };  

Также к:

 module.exports = {  reactStrictMode: true,  webpack5: true,  webpack: (config) =gt; {  config.target = 'node';  config.node = {  ...config.node,  __dirname: true, // and false  };  return config;  }, };  

И все еще не работает