我正在使用一个名为lottie-web的npm模块,它基本上为您提供了一个svg动画,如果您给它一个json数据文件,则该文件是我从adobe中获得的效果(为了简短起见,它所做的只是通过其id提取一个html元素)并在路径中获取json数据文件并在给定元素中加载svg。)我正在使用带有express的节点应用程序,并使用handlebars(hbs)将前端呈现给浏览器,因此在这种情况下,我们需要附加lottie-web cdn链接的脚本标签,或者另一种方法是,我们可以使用browserify转换下面的给定文件,然后运行browserify myfilename -o bundle.js命令,然后在script标签中使用bundle.js加载js。在客户端
const bodymovin = require('bodymovin')
var animation = bodymovin.loadAnimation({
container: document.getElementById('loader'),
renderer: 'svg',
loop: true,
autoplay: true,
path: '../../public/js/loader.json'
})
如果我采用第一种方法(即使用CDN链接),则会收到以下错误lottie.js:4406 Uncaught DOMException:无法从“ XMLHttpRequest”读取“ responseText”属性:仅当对象的'responseType'是'或'text'(是'json')。在formatResponse(https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.6.10/lottie.js:4406:17)在XMLHttpRequest.xhr.onreadystatechange(https://cdnjs.cloudflare.com/ajax/ libs / bodymovin / 5.6.10 / lottie.js:4424:26)
如果我采用第二种方法(即使用browserify捆绑的js文件),则会收到以下错误VM2609:1 Uncaught SyntaxError:XMLHttpRequest.xhr.onreadystatechange(在JSON位置0处JSON中的意外令牌<) bundle.js:8583)
但是,如果我尝试使用普通html文件中的cdn链接并添加js文件来运行上面给出的代码(即,在普通html css js结构中的文件夹结构之外,则可以正常工作)。有人可以提前指出我要去哪里了。
当基础资产(../../public/js/loader.json
)加载XMLHttpRequest时,这些错误使我认为您的Web服务器答案不正确。
尝试打开浏览器控制台并检查Network
选项卡,查看该请求的情况。本Response
应该是一个正确的JSON。同时检查该Headers
请求的,您可能还会注意到那里的内容。
在检查完git repo之后,我注意到,您有一条明确的路线:app.get('*' ,(req,res) => {
,它会回答带有生成的HTM文本404.hbs
。
我认为,当您要加载JSON
该规则时,该规则将被执行,然后为调用者呈现HTML,这会引起您看到的错误。
另一个奇怪的事情是我bodymovin.loadAnimation
在您的git repo中看不到这些行...
这行应该是path: './js/loader.json'
因为您要提供的public
目录w / express作为资产根目录,并且json
文件位于下public/js/loader.json
。
另外,在解决了另一个问题之后,可能是您JSON
的配置错误,但是我也不会为您解决该问题。照顾自己。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句