Javascript 使用module.exports和ES6导出导入
我正在尝试将一个函数导入到一个文件中,然后从该文件中导出它。这应该是直截了当的,但由于某种原因,我无法让它工作 search_action.jsJavascript 使用module.exports和ES6导出导入,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我正在尝试将一个函数导入到一个文件中,然后从该文件中导出它。这应该是直截了当的,但由于某种原因,我无法让它工作 search_action.js function search_actions() { this.receive_results = function() { return { type: 'RECEIVE_RESULTS', results: results } } }
function search_actions() {
this.receive_results = function() {
return {
type: 'RECEIVE_RESULTS',
results: results
}
}
}
module.exports = search_actions
index.js
require('es6-promise').polyfill();
var SearchActions = require('./search_actions.js')
var search_actions = new SearchActions()
//console.log(search_actions.receive_results)
export search_actions.receive_results
尽管console.log(search\u actions.receive\u results)打印函数,但index.js底部的导出失败,并带有意外标记。那么,正确的做法是什么呢 重新导出的最后一行无效:
export search_actions.receive_results
不能使用右侧的foo.bar
引用,因为导出需要非限定名称。您可以引用对象声明中的字段并导出:
export default {
search_actions: search_actions.receive_results
}
有关导出语法,请参见规范的第页。您遇到的问题是导出的x.y
部分,对象或局部变量将解决该部分
如果您同时使用ES6import
,您还可以执行以下操作:
import {receive_results} from 'search_actions';
export default receive_results;
谢谢,但那也不行。这是可行的:导出函数receive_results(results){return{type:'receive_results',results:results}}}但是我试图避免必须在index.js中编写它(宁愿从search_actions.js导入,然后导出返回的函数)。如果您使用
导入
或将函数分配给变量,您可以这样做。您实际上只需要一个不带点的引用。正如您所说,var receive_results=search_actions.receive_results export{receive_results}“意外标记”表示您有语法错误。它与search\u actions.receive\u results
是否具有正确的值无关。