在Nextjs 13中遇到一个可怕的插件错误

ehxuflar  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(165)

我在使用Formidable和NextJS 13时遇到这个错误:

Critical dependency: the request of a dependency is an expression // error

Import trace for requested module:
./node_modules/formidable/src/Formidable.js
./node_modules/formidable/src/index.js
./app/api/rest/file/route.ts

error - Error: Cannot find module 'C:\Users\jacob\Documents\GitHub\pim-nextjs-ts\yakpim\.next\server\app\api\rest\file\plugins\octetstream.js'

这是代码块:

export async function POST(request: NextApiRequest, response: NextApiResponse) {
        console.log("success"); // this works
    
        const form = formidable({ multiples: true }); // this triggers the error

我已经尝试了yarn update worldwide以及'' yarn remove ''和'' yarn add ''。无法修复错误。
在node_modules > powerful文件夹中,我可以看到插件已添加并使用,但这会导致错误。
想知道别人是否遇到过,你是如何设法解决的?
谢谢!
Yarn更新-未修复
Yarn移除和Yarn安装-无修复

uurv41yg

uurv41yg1#

由于强大的无法处理它,我直接从formdata导入文件并保存它。
在请求的formData中,我们将File对象转换为Buffer并存储它。
下面是如何保存图像的示例。

export const POST = async(req: NextRequest) => {
    const f:any = await req.formData();
    const obj = Object.fromEntries(f);    

    Object.entries(obj).forEach( async([k, v]) => {
        if( !!v.type ) { // If it's a file, values like image/png are passed over.
            const b = await v.arrayBuffer();
            const buff = Buffer.from(b);

            fs.writeFileSync(`./public/${k}`, buff);
        }
    });
}

如果您有一个固定的键值,而不必转换为Object.fromEntries,则可以使用

const fileObject = f.get("filename");
const b = await fileObject.arrayBuffer();
const buff = Buffer.from(b);

相关问题