ReferenceError: File is not defined - express



我正在尝试将一些base64字符串转换为图像文件,并通过express将其传递给firebase。

前端一切正常,除了这部分:

const convertBase64ToFile = (base64String, fileName) => {
let arr = base64String.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let uint8Array = new Uint8Array(n);
while (n--) {
uint8Array[n] = bstr.charCodeAt(n);
}
const file = new File([uint8Array], fileName, { type: mime }); /// getting Error in this line
return file
}

我必须导入哪个库?

错误:

const file = new File([uint8Array], fileName, { type: mime }); /// getting Error in this line
^
ReferenceError: File is not defined
at convertBase64ToFile (C:Usersrahtodevelnewmaissaudeapiapifirestorewrite.js:19:16)
at conversor (C:Usersrahtodevelnewmaissaudeapiapifirestorewrite.js:33:16)
at C:UsersrahtodevelnewmaissaudeapimainServer.js:31:21
at Layer.handle [as handle_request] (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterlayer.js:95:5)
at next (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterroute.js:144:13)
at Route.dispatch (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterroute.js:114:3)
at Layer.handle [as handle_request] (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterlayer.js:95:5)
at C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterindex.js:284:15
at Function.process_params (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterindex.js:346:12)
at next (C:Usersrahtodevelnewmaissaudeapinode_modulesexpresslibrouterindex.js:280:10)
Node.js v18.6.0
[nodemon] app crashed - waiting for file changes before starting...

然后,我变成了这样:

const convertBase64ToFile = (base64String, fileName) => {
let arr = base64String.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let uint8Array = new Uint8Array(n);
while (n--) {
uint8Array[n] = bstr.charCodeAt(n);
}
const file = fs.writeFileSync(fileName, uint8Array)
let fiz = fs.readFileSync(fileName, file);
// const file = new File([uint8Array], fileName, { type: mime });
return fiz
}

并得到这个错误:

C:Usersrahtodevelnewmaissaudeapinode_modules@firebasestoragedistindex.node.cjs.js:3036
const newPath = child(ref._location.path, childPath);
^
TypeError: Cannot read properties of undefined (reading 'path')

您似乎正在使用node运行时。可以使用fs模块访问文件系统

fs.writeFile( file, data, options, callback )

参数:该方法接受上述和以下所述的四个参数:

  • file:字符串、缓冲区、URL或文件描述整数,表示要写入的文件的路径。使用文件描述符将使其行为类似于fs.write()方法。
  • data:它是一个字符串,Buffer, typearray或DataView,将被写入文件。
  • options:它是一个字符串或对象,可用于指定影响输出的可选参数。它有三个可选参数:
  • encoding:字符串值,指定文件的编码。默认值为"utf8"。
  • mode:整数值,指定文件模式。默认值为0666。
  • flag:这是一个字符串值,指定写入文件时使用的标志。默认值为"w"。
  • callback:当方法被执行时调用的函数。
    • err:操作失败时抛出的错误。

用法:

var fs = require('fs');
fs.writeFile('file.txt', 'Hello content!', function (err) {
if (err) throw err;
console.log('Saved!');
});

也可以在这里和这里查看更多用法。还有查看这里的文档。