我用户FilesaverJS用于在客户端保存JSON文件。
当我使用RequireJS加载Filesaver JS时出错:
Uncaught Error: Mismatched anonymous define() module: function () {
return saveAs;
}
我的requirejs优化器配置文件:
require.config({
paths: {
...
blobjs : "../../libs/blobjs/Blob",
....
filesaver : "../../libs/filesaver/FileSaver",
},
shim : {
...
blobjs: {
exports: "Blob"
},
filesaver: {
exports: "Filesaver"
},
...
},
optimize: 'uglify2',
uglify2: {
output: { beautify: true },
beautify: { semicolons: false }
},
baseUrl : '../assets/js/',
mainConfigFile : '../assets/js/config.js',
name : 'formbuilder',
out : 'formbuilder.min.js',
output : { beautify: true },
preserveLicenseComments : false,
include : ['here i include some views template']
});
在我的代码中:
var blob = new Blob([jsonContent], {
type: "application/json;charset=utf-8"
});
saveAs(blob, collectionAndFilename['filename'] + '.json');
感谢您的帮助
答案 0 :(得分:1)
我遇到了同样的问题。在调查之后,我意识到我正在将脚本标记中的FileSaver文件加载,并且因为在FileSaver中调用了define()函数 - 这是一个问题。
这是reauire.js docs中的陈述:
确保通过RequireJS API加载调用define()的所有脚本。 不要在HTML中手动编写脚本标记以加载具有的脚本 define()调用它们。
我使用requireJS API加载文件,一切正常......
答案 1 :(得分:0)
这对我有用:
requirejs(["lib/FileSaver"], function(){
console.log("in FileSAver");
var text = createString();
var fileName = getFileName();
var blob = new Blob([text], {type: "text/plain;charset=utf-8"});
window.saveAs(blob, fileName);
});
答案 2 :(得分:0)
由于@0.0.0 No repository field
使用的是命名的AMD模块,因此您必须将其用作FileSaver.js
文件中的包,例如require.config
库。
moment
然后只需要包require.config({
packages: [{
name: 'moment',
location: './js/resources/',
main: 'moment'
}, {
name: 'FileSaver.js',
location: './js/resources/',// path where you have placed FileSaver.js file
main: 'FileSaver.js'
}]
});
FileSaver.js