在 Vue.js 中加载节点库

Posted

技术标签:

【中文标题】在 Vue.js 中加载节点库【英文标题】:Loading node libraries in Vue.js 【发布时间】:2020-05-21 09:39:16 【问题描述】:

首先,我正在使用 Vue 2 + Firebase 技术自学 Web Apps。对假人的解释将不胜感激。

我正在尝试在我的前端列出来自 Cloud Storage (Google Cloud Platform) 的存储桶。所以我找到了一个节点library 来完成这个确切的任务。我创建了一个 Vue 组件来列出存储桶,但是当我尝试将节点库导入组件时(在脚本标签内)

import storage from '@google-cloud/storage'

我收到此错误:

 ERROR  Failed to compile with 1 errors                                                         13:34:51
 error  in ./node_modules/configstore/index.js

Module parse failed: Unexpected token (26:4)
You may need an appropriate loader to handle this file type.
|               if (defaults) 
|                       this.all = 
|                               ...defaults,
|                               ...this.all
|                       ;

 @ ./node_modules/gcs-resumable-upload/build/src/index.js 19:20-42
 @ ./node_modules/@google-cloud/storage/build/src/file.js
 @ ./node_modules/@google-cloud/storage/build/src/index.js
 @ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0&bustCache!./src/components/Bucket.vue
 @ ./src/components/Bucket.vue
 @ ./src/router/index.js
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

我什至不知道是否可以在 Vue 组件中使用这种库,或者我需要一个 node.js 后端环境。在继续组件开发之前,我想知道是否可以在组件中使用节点库,因为我对此很迷茫。

这是我的依赖版本以备不时之需:

"dependencies": 
    "@google-cloud/storage": "^4.3.0",
    "axios": "^0.19.2",
    "firebase": "^7.8.0",
    "googleapis": "^47.0.0",
    "vue": "^2.5.2",
    "vue-firestore": "^0.3.30",
    "vue-router": "^3.0.1",
    "vuetify": "^2.2.8"
  ,
  "devDependencies": 
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "babel-helper-vue-jsx-merge-props": "^2.0.3",
    "babel-loader": "^7.1.1",
    "babel-plugin-syntax-jsx": "^6.18.0",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-plugin-transform-vue-jsx": "^3.5.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "chalk": "^2.0.1",
    "copy-webpack-plugin": "^4.0.1",
    "css-loader": "^0.28.0",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "node-notifier": "^5.1.2",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^2.0.8",
    "postcss-url": "^7.2.1",
    "rimraf": "^2.6.0",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "uglifyjs-webpack-plugin": "^1.1.1",
    "url-loader": "^0.5.8",
    "vue-loader": "^13.3.0",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.5.2",
    "webpack": "^3.6.0",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-server": "^2.9.1",
    "webpack-merge": "^4.1.0"
  ,
  "engines": 
    "node": ">= 6.0.0",
    "npm": ">= 3.0.0"
  ,

谢谢

【问题讨论】:

【参考方案1】:

这个包@google-cloud/storage 适用于 Node.js 环境,这就是它在浏览器中不起作用的原因。在npm 存储库上,您几乎可以找到任何东西,但您确实需要知道它的目标平台是什么。阅读文档通常有助于了解您是否找到了正确的软件包。

为此,您需要一些 Node API 层,您将在其中使用 @google-cloud/storage,然后在您的 Vue 应用程序中使用该 API。

【讨论】:

我明白了。我没有启动节点后端层的知识,因此我将继续寻找一种解决方案来列出没有该库的存储桶。

以上是关于在 Vue.js 中加载节点库的主要内容,如果未能解决你的问题,请参考以下文章

在节点 js 中加载本地 jquery.js 文件

在 tree.Panel 中加载特定图标,具体取决于节点类型

有没有一种简单的方法可以在节点模块中加载 json?

在 Vue.js 2 组件中加载时未定义 Webpack 外部 JS 文件

使用 Typescript 在 vue.js 中加载 JSON 文件

如何在 Vue.js 应用程序中加载数据