javascript - 如何在grafana datasource-plugin中使用外部库

标签 javascript node.js module npm grafana

如何在 grafana 数据源插件中使用外部库?

我的插件可以工作,但是当我需要我已经安装并保存到 package.json 文件的“mqtt”库时,我收到以下错误:

插件错误 加载错误 http://localhost:3000/public/mqtt作为 http://localhost:3000/public/plugins/myfirstplug/datasource.js 中的“mqtt”

this is what my datasource.js head looks like:

define([
  'mqtt'
  'angular',
  'lodash',
  '../core_module',
  'app/core/config',
],
function (mqtt,angular, _, coreModule, config) {
  'use strict';

正如我所说,package.json 已经包含 mqtt 作为依赖项,我将 mqtt 文件夹放在几乎每个文件夹中,这些文件夹也可以手动用作库文件夹。

如何在 grafana 数据源插件中使用 npm 库使其正常工作?

提前致谢!

最佳答案

我遇到了同样的问题,包括对我的插件的额外依赖。我用了this experimental plugin作为解决这个问题的样板:

  1. 您需要创建一个文件夹:src/external/
  2. 在此文件夹下添加依赖项的已编译单文件 dist 版本,例如 src/external/mqtt.js。 (实际上即使是 Grafana 项目在 git 存储库中也有 vendors)
  3. 在构建任务中,您需要复制external 文件夹下的文件,所以您的Gruntfile.js 应该是这样的:https://github.com/NatelEnergy/grafana-plotly-panel/blob/master/Gruntfile.js

    ...
    
    copy: {
      ...
      externals: {
        cwd: 'src',
        expand: true,
        src: ['**/external/*'],
        dest: 'dist'
      }
      ...
    },
    
    ...
    
    grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:pluginDef', 'copy:img_to_dist', 'copy:externals', 'babel']);
    
  4. 现在您可以导入外部库了:import * as mqtt from './external/mqtt';

关于javascript - 如何在grafana datasource-plugin中使用外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594680/

相关文章:

没有列名的javascript序列化

javascript - passport-jwt 总是返回 401 unauthorized

node.js - 为什么 PM2 没有启动我的 Node 进程?

javascript - 如何在 JS 中聚合每周的天数数组?

python - 如何在python中制作带有按钮的窗口

javascript - 找不到模块 '.../models/user' nodejs

在 C 中创建静态模块接口(interface)

javascript - 如何在 React 中实现 Cloudinary Upload Widget?

javascript - 将鼠标悬停在具有叠加幻灯片效果但没有任何反向效果的图像上

javascript - 避免 Javascript 竞争条件