我正在使用ember创建一个网站,目前我很难在名为'add-student.js'的组件中使用'ember-cli-sheetjs'模块。我似乎无法使用我当前的代码调用文档中的任何函数。
为了在ember中获取模块,我将它添加到package.json中的dev依赖项中,然后运行“npm install”命令,该命令成功安装了“ember-cli-sheetjs”模块。然后我写下来尝试使用它:
import Ember from 'ember';
import xlsx from 'npm:ember-cli-sheetjs';
//have also tried directly using the sheetjs module after
//installing sheetjs with the command
//npm install xlsx --save-dev
//import xlsx from 'npm:xlsx';
export default Ember.Component.extend({
fileinput: null, //this is set with an input handler in the hbs
actions: {
fileLoaded: function() {
console.log(this.get('fileinput')); //properly outputs the file name
var workbook = xlsx.readFile(this.get('fileinput'));
},
}
然而,这会导致错误说:
add-student.js:134 Uncaught TypeError: _npmEmberCliSheetjs.default.readFile is not a function
我觉得问题在于它没有遵循函数的正确路径(存在于函数文档中)。如果有人能告诉我我做错了什么,那将是一个巨大的帮助。
答案 0 :(得分:1)
如果有人遇到这个问题,我已经找到了解决方法。
首先在index.html中包含以下行:
<script src="assets/parsing/dist/xlsx.full.min.js"></script>
接下来在public中创建一个名为assets的文件夹(如果它尚不存在)。接下来在资产内创建一个名为'parsing'的文件夹,在'parsing'中创建一个名为'dist'的文件夹。接下来在'dist'中创建一个名为'xlsx.full.min.js'的文件。
接下来将代码从https://raw.githubusercontent.com/SheetJS/js-xlsx/master/dist/xlsx.full.min.js复制并粘贴到xlsx.full.min.js文件中。
最后,在您要使用sheetjs模块的任何组件中,只需将以下内容放在import语句下面:
/* global XLSX */
这是一种解决方法,但它允许您使用sheetjs模块。
答案 1 :(得分:1)
使用Bower
// bower.json
"dependencies": {
"js-xlsx": "^0.11.5"
}
// ember-cli-build.js
module.exports = function(defaults) {
app.import('bower_components/js-xlsx/dist/xlsx.min.js');
}
并在@Russ建议的组件中
import Ember from 'ember';
/* global XLSX */