Requirejs 不加载库

Requirejs not loading library

我正在使用允许数据可视化的数据分析工具 (KNIME),但只能通过公开 javascript 层(即我无法构建 html 文件) ,因此这意味着我需要通过 Requirejs 加载外部库。

我通常只使用 d3.js 库,它可以通过 require() 函数非常简单地加载。但是,当我尝试加载 regression-js 库时,回归对象 returned 为未定义。

regression-js Github 参考页面 - https://github.com/Tom-Alexander/regression-js

如何加载这两个库以便正确可视化我的数据?

我尝试过使用 shim() 和 define(),但我不确定哪里出错了。

require.config({
    paths: {
        d3src: 'https://d3js.org',
    },
    map: {
        '*': {
            'd3': 'd3src/d3.v5.min', //loads fine
            'd3-color': 'd3src/d3-color.v1.min', //loads fine
            'd3-interpolate': 'd3src/d3-interpolate.v1.min', //loads fine
            'd3-scale-chromatic': 'd3/src/d3-scale-chromatic.v1.min', //loads fine
            'regression': 'https://cdnjs.cloudflare.com/ajax/libs/regression/1.4.0/regression.min.js' //does not seem to load properly
        }
    }
});

require(['d3', 'd3-color', 'd3-interpolate','regression'], function(d3,regression) { //am I not calling the regression object correctly here?

//ideally this code should return something

const result = regression.linear([[0, 1], [32, 67], [12, 79]]);
// Uncaught TypeError: regression.linear is not a function

const gradient = result.equation[0];
const yIntercept = result.equation[1];
console.log(result,gradient,yIntercept);

});

在提供的代码中,console.log() 应该 return 一个对象,后跟两个浮点数。

您尝试加载的版本(1.4.0) 太旧,不支持requirejs。如果您仍然需要该版本,则需要将其加载到 script 标记中,然后使用全局对象 regression.

如果你能使用最新的2.0.1版本,那么你可以这样:

require.config({
    paths: {
        d3src: 'https://d3js.org',
        regressionsrc: 'https://cdn.jsdelivr.net/npm/regression@2.0.1/dist'
    },
    map: {
        '*': {
            'd3': 'd3src/d3.v5.min', //loads fine
            'd3-color': 'd3src/d3-color.v1.min', //loads fine
            'd3-interpolate': 'd3src/d3-interpolate.v1.min', //loads fine
            'd3-scale-chromatic': 'd3/src/d3-scale-chromatic.v1.min', //loads fine
            'regression': 'regressionsrc/regression.min' //loads fine
        }
    }
});

require(
  ['d3', 'd3-color', 'd3-interpolate','regression'], 
  function(d3,d3Color, d3Interpolate, regression) {

    const result = regression.linear([[0, 1], [32, 67], [12, 79]]);

    const gradient = result.equation[0];
    const yIntercept = result.equation[1];
    console.log(result,gradient,yIntercept);

});

https://www.jsdelivr.com/package/npm/regression 而不是 cdnjs.com

加载它

或者使用 npm install regression 并从您自己的服务器或本地加载它(如果正在开发)。

希望对您有所帮助