Vue.js中的googleapis:TypeError:“原始”参数必须为Function类型

时间:2019-12-23 16:28:06

标签: javascript vue.js google-sheets google-api

我正在尝试使用Vue项目的googleapi在Google电子表格中获取一些行,并且我已经在Google控制台中创建了一个项目和正确的服务帐户凭据。 问题是单击按钮TypeError: The "original" argument must be of type Function时出现此错误,但我使用的是以下简单代码:

<template>
  <div id="app" class="container">
    <button class="button" @click="getData">Get data</button>
  </div>
</template>

<script>
export default {
  name: 'app',

  methods: {
    getData: async function() {
      const { google } = require('googleapis');
      const range = 'Data!A2:C999';
    }
  }
}
</script>

我不知道是什么原因导致了此错误,看来const { google } = require('googleapis');中出了点问题,但我无法弄清楚。

2 个答案:

答案 0 :(得分:0)

const { google } = require('googleapis');是不正确的语法。

您应该添加:

import { google } from 'googleapis';

在开始script标签下面

答案 1 :(得分:0)

我遇到了同样的问题,并且在应用了变通方法here之后,问题得以解决。

在浏览器上运行readFile()似乎有问题。

您需要做的就是像这样编辑webpack.config.js文件

module.exports = {
resolve: {
    extensions: ['.js'],
    alias: {
        fs: path.resolve(__dirname, 'src/mock-fs.js')
    }
  }
};

如果使用的是Vue CLI 3,则需要在根级别创建一个vue.config.js文件,因为在创建项目时没有创建webpack.config.js文件(它是在运行时创建的) )并像这样(more info)

对其进行修改
module.exports = {
configureWebpack: {
    resolve: {
        extensions: ['.js'],
        alias: {
            fs: path.resolve(__dirname, 'src/mock-fs.js')
        }
    }
  }
}

mock-fs.js在哪里

module.exports = {
readFile () {}
}