#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; }, };
И все еще не работает