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
并从您自己的服务器或本地加载它(如果正在开发)。
希望对您有所帮助
我正在使用允许数据可视化的数据分析工具 (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
并从您自己的服务器或本地加载它(如果正在开发)。
希望对您有所帮助