【发布时间】:2019-08-09 14:37:38
【问题描述】:
我在我的代码中使用canvg('canvas', svg); 行。这意味着我需要 canvg.js。
我在我的 html 标头中包含了 canvg.js。但是,它给了我一个“require is undefined”的错误。
对于不知道canvg.js前两行的人来说:
var RGBColor = require('rgbcolor'),
StackBlur = require('stackblur-canvas');
这首先在我的控制台中显示为错误。这并不是真正的问题,因为代码仍然有效。
现在我要开始测试了,尽管错误会导致测试无法运行。这是个问题。
error loading file: /test/tests/Dependencies/canvg.js:4: Uncaught ReferenceError: require is not defined
我去了https://requirejs.org/docs/release/2.3.6/comments/require.js并将代码复制并粘贴到一个名为require236.js的文件中并保存在我的项目中。
然后我转到我的 main.html 并添加了我的 <script src="require236.js"></script>
在加载canvg之前。
我在控制台中遇到了这些错误:
Uncaught Error: Mismatched anonymous define() module: function(){return f}
https://requirejs.org/docs/errors.html#mismatch
at makeError (require236.js:168)
at intakeDefines (require236.js:1254)
at require236.js:1452
require236.js:143 Uncaught Error: Module name "rgbcolor" has not been loaded yet for context: _. Use require([])
https://requirejs.org/docs/errors.html#notloaded
at makeError (require236.js:168)
at Object.localRequire [as require] (require236.js:1436)
at requirejs (require236.js:1797)
at canvg.js:4
而且我的测试不会将该文件作为依赖项运行。
https://requirejs.org/docs/errors.html#mismatch 说
为了避免错误:
确保通过 RequireJS API 加载所有调用 define() 的脚本。
不要在 HTML 中手动编写脚本标签来加载具有 define() 调用它们。
如果您手动编写 HTML 脚本标签,请确保它只包含命名的 模块,以及一个匿名模块,它将与一个模块同名 该文件中的模块未加载。
如果问题是使用加载器插件或匿名 模块,但 RequireJS 优化器不用于文件捆绑,使用 RequireJS 优化器。
如果问题是 var define lint 方法,请使用 /*global define */(否 "global") 注释样式前的空格。
但老实说,我不明白他们希望如何包含它以及在哪里包含它。请使用简单的英文单词(或仅显示代码示例),如果您理解它足以解释它。
我正在从 PhpStorm 运行。我正在使用 jsTestDriver 进行测试。我一定是在以某种方式声明它是错误的,但我不知道 require.js 如何以及为什么会给我这样的问题。
【问题讨论】:
标签: javascript requirejs phpstorm js-test-driver canvg