(hashlips_art_engine-1.1.2_patch_v5) "path" 参数必须是字符串类型。收到未定义
(hashlips_art_engine-1.1.2_patch_v5) The "path" argument must be of type string. Received undefined
我正在尝试更新 10 个 JSON 文件的一些元数据,其中一些已正确更新,而另一些则出现以下错误。
下面你可以看到 6 个文件给我错误,4 个文件正确更新。
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
5.png 上传 & 5.json 更新!
4.png 已上传 & 4.json 已更新!
1.png 上传 & 1.json 更新!
7.png 上传 & 7.json 更新!
这是我使用的 node.js 代码:
onst FormData = require('form-data');
const fetch = require('node-fetch');
const path = require("path");
const basePath = process.cwd();
const fs = require("fs");
fs.readdirSync(`${basePath}/build/images`).
forEach(file => {
const formData = new FormData();
const fileStream = fs.createReadStream(`${basePath}/build/images/${file}`);
formData.append("file", fileStream);
let url = 'https://api.nftport.xyz/v0/files';
let options = {
method: 'POST',
headers: {
Authorization: 'SecretApiCode',
},
body: formData
};
fetch(url, options)
.then(res => res.json())
.then((json) => {
const fileName = path.parse(json.file_name).name;
let rawdata = fs.readFileSync(`${basePath}/build/json/${fileName}.json`);
let metaData = JSON.parse(rawdata);
metaData.file_url = json.ipfs_url;
fs.writeFileSync(`${basePath}/build/json/${fileName}.json`,
JSON.stringify(metaData, null, 2));
console.log(`${json.file_name} uploaded & ${fileName}.json updated!`);
})
.catch(err => console.error('error:' + err));
});
我有 10 个 png 文件:
1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png
还有 10 个 JSON 个文件
1.json
2.json
3.json
4.json
5.json
6.json
7.json
8.json
9.json
10.json
您代码中的 问题 似乎与获取 URL.
有关
事实证明,有时您的代码会因错误而失败,有时却能成功运行。
可能发生的情况是,有时,当您从 URL 获取数据时,它可能没有 file_name
属性(因为错误等)。 )
当您尝试使用以下方法解析路径时:
path.parse(json.file_name);
file_name
可能是 undefined
,因为可能没有这样的密钥。而且,由于 path.parse()
无法解析 undefined
,它 returns 是一个错误,表示只接受 string
s(如下所示)。
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
有许多可能的解决方案,因此在下面列出。
添加检查 file_name
是否可用。如果不是,则不要尝试用 path.parse()
解析它。您可以使用下面的代码来检查它(在第二个 .then()
方法中)。
if (!json.file_name) {
console.error("Error fetching file name.");
return;
}
如果你的API支持,请检查响应正文是否有错误。假设错误类似于 .error
,您可以使用下面的代码作为指导(在第二个 .then()
方法中添加)。
if (!json.file_name && json.error) {
console.log(json.error.message);
return;
}
可能还有许多其他(更好)的解决方案,但这些解决方案只是给您一个起点。
解决方案 1 和 2 非常相似,但它们适用于不同的情况。
我正在尝试更新 10 个 JSON 文件的一些元数据,其中一些已正确更新,而另一些则出现以下错误。
下面你可以看到 6 个文件给我错误,4 个文件正确更新。
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
5.png 上传 & 5.json 更新!
4.png 已上传 & 4.json 已更新!
1.png 上传 & 1.json 更新!
7.png 上传 & 7.json 更新!
这是我使用的 node.js 代码:
onst FormData = require('form-data');
const fetch = require('node-fetch');
const path = require("path");
const basePath = process.cwd();
const fs = require("fs");
fs.readdirSync(`${basePath}/build/images`).
forEach(file => {
const formData = new FormData();
const fileStream = fs.createReadStream(`${basePath}/build/images/${file}`);
formData.append("file", fileStream);
let url = 'https://api.nftport.xyz/v0/files';
let options = {
method: 'POST',
headers: {
Authorization: 'SecretApiCode',
},
body: formData
};
fetch(url, options)
.then(res => res.json())
.then((json) => {
const fileName = path.parse(json.file_name).name;
let rawdata = fs.readFileSync(`${basePath}/build/json/${fileName}.json`);
let metaData = JSON.parse(rawdata);
metaData.file_url = json.ipfs_url;
fs.writeFileSync(`${basePath}/build/json/${fileName}.json`,
JSON.stringify(metaData, null, 2));
console.log(`${json.file_name} uploaded & ${fileName}.json updated!`);
})
.catch(err => console.error('error:' + err));
});
我有 10 个 png 文件:
1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png
还有 10 个 JSON 个文件
1.json 2.json 3.json 4.json 5.json 6.json 7.json 8.json 9.json 10.json
您代码中的 问题 似乎与获取 URL.
有关事实证明,有时您的代码会因错误而失败,有时却能成功运行。
可能发生的情况是,有时,当您从 URL 获取数据时,它可能没有 file_name
属性(因为错误等)。 )
当您尝试使用以下方法解析路径时:
path.parse(json.file_name);
file_name
可能是 undefined
,因为可能没有这样的密钥。而且,由于 path.parse()
无法解析 undefined
,它 returns 是一个错误,表示只接受 string
s(如下所示)。
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
有许多可能的解决方案,因此在下面列出。
添加检查
file_name
是否可用。如果不是,则不要尝试用path.parse()
解析它。您可以使用下面的代码来检查它(在第二个.then()
方法中)。if (!json.file_name) { console.error("Error fetching file name."); return; }
如果你的API支持,请检查响应正文是否有错误。假设错误类似于
.error
,您可以使用下面的代码作为指导(在第二个.then()
方法中添加)。if (!json.file_name && json.error) { console.log(json.error.message); return; }
可能还有许多其他(更好)的解决方案,但这些解决方案只是给您一个起点。
解决方案 1 和 2 非常相似,但它们适用于不同的情况。