【问题标题】:Google Drive API : ENOENT - but my file is just in the same directoryGoogle Drive API:ENOENT - 但我的文件就在同一个目录中
【发布时间】:2018-05-30 02:27:56
【问题描述】:

ENOENT - 但我的文件只是在同一个目录中...... 大家好,我尝试使用 API 向我的 Google Drive 发送一个名为birds.mp3 的文件。该文件必须由要发送的函数访问。

尽管我尝试发送的文件与相关代码位于同一文件夹中,但我的控制台返回了我:

events.js:183

投掷者; // 未处理的“错误”事件

^

错误:ENOENT:没有这样的文件或目录,打开'./birds.mp3'

这是我的树:

-- folder
  |-- birds.mp3
  |-- quickstart.js

这里是我的 quickstart.js

module.exports.insertDrive = function (req) {
  console.log("callback reached.")
var url = req.body.url;
var folderId = 'id';
var fileMetadata = {
  'name': req.body.word,
  parents:  "id"
};
var media = {
  mimeType: 'audio/*',
  body: fs.createReadStream("./birds.mp3") // PATH FUNCTION HERE
};
drive.files.create({
  resource: fileMetadata,
  media: media,
  fields: 'id'
}, function (err, file) {
  if (err) {
    // Handle error
    console.error(err);
  } else {
    console.log('File Id: ', file.id);
  } 
})};

我不知道为什么我的文件无法访问。我尝试了一些技巧,例如 path.resolve 等等,我尝试将我的birds.mp3 推送到多个文件夹中(如果有的话),但都失败了。

谢谢。

【问题讨论】:

标签: javascript node.js api path google-drive-api


【解决方案1】:

如果您尝试从与当前模块相同的目录加载文件并将其传递给 Google API,请使用 __dirname 而不是 ././ 使用当前工作目录,这取决于整个程序的调用方式,并且不会指向您的模块目录。

因此,如果预期文件与您的模块位于同一目录中,请更改以下内容:

fs.createReadStream("./birds.mp3")

到这里:

fs.createReadStream(path.join(__dirname, "birds.mp3"));

【讨论】:

  • 它有效,如果可能的话,我会精确,如果我像今天所做的那样寻找“blob:http/[path]”,如何到达这条路径。因为它也让我成为了一个 ENOENT。
  • @Spiderman - 我不明白你的评论。如果您需要其他方面的帮助,您可以写一个新问题并在该新问题中详细描述新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2021-09-17
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2017-06-04
相关资源
最近更新 更多