我正在尝试使用模块。导出以创建“全局”函数,我可以在React项目中使用该函数使用Axios进行API调用。
我已经尝试了以下...
import axios from 'axios';
module.exports = {
fetchApi: function (endPoint) {
var encodedURI = window.encodeURI('http://localhost:3001/' + endPoint);
return axios.get(encodeURI)
.then(function (response) {
return response.data
})
}
}
//call function in other components like this
componentDidMount () {
fetchApi.fetchApi(this.setState.endPoint)
.then(function (endPoint) {
console.log("API endpoint: " + endPoint)
})
}
这将html" target="_blank">返回错误…'未定义fetchApi没有未定义
我知道,通常你可以使用导出默认导入和导出组件,但我认为这不是必需的,如果使用module.export.
另外,如果我尝试像这样导入。。。
import fetchApi from '../../../utils/api'
我得到以下错误...尝试导入错误:'.../.../.../utils/api'不包含默认导出(导入为'getchApi')。
任何帮助赞赏。谢谢。
编辑:
从“axios”导入axios;
解决方案(编辑)。。。
api.js
const api = {
fetchApi: function(endPoint){
var encodedURI = window.encodeURI('http://localhost:3001/' + endPoint);
console.log(encodedURI)
return axios.get(encodedURI)
.then(function (response) {
return response.data
})
}
}
export default api;
地点。js
import api from '../../../utils/api'
//single api call
componentWillMount = async () => {
api.fetchApi('sites')
.then(data => {
console.log(data);
this.setState({ rows: data.rows, columns: data.columns })
})
.then(async () => {
this.setState({ tableRows: this.assemblePosts(), isLoading: false })
});
}
这使我可以访问以下api终结点...
http://localhost:3001/sites
谢谢你的帮助。
module.exports应该导出函数,而不是对象。
module.exports = function() {}
然而,如果你的api中有多个函数,你可能会更好地利用命名导出:
exports.fetchApi = function() {}
此外,您可能希望在这里使用async
函数和wait
,这将有助于清理所有。然后()
我建议不要混合require和es6导入语法。坚持es6语法。es6语法也是如此。
import axios from 'axios';
const helpers = {
fetchApi: function(){
}
}
export default helpers;
用法
import helpers from './helpers';
helpers.fetchApi()
我正在尝试创建一个导出多个ES6类的模块。假设我有以下目录结构: 和每个导出一个默认ES6类: 我目前有我的设置如下: 但是,我无法导入。我希望能够这样做,但找不到类: 在ES6模块中导出多个类的正确方法是什么?
模块内的所有代码和数据都有文件作用域,这意味着它们不能被模块外部的代码访问。 要在模块外部共享代码或数据,需要使用export关键字导出。 在后端(服务器端)使用模块是相对简单的,你只需使用import关键字。 然而,Web浏览器没有模块或导入的概念,他们只知道如何加载JavaScript代码。 我们需要一种方法来引入一个javascript模块,以便从其他JavaScript代码开始使用它。 这
在过去,我使用了揭示模块模式。 在ES6中,通过对象速记改进了这一点。 现在有了内置的模块语法,我很难找到与上面最相似的首选模式。 选项#1命名导出 选项#2带分解结构的默认导出/导入 选项#3默认导出/导入与名称行间距 我喜欢带有命名导出的选项#1,因为它在“destructuring”导入语法中提供了简单性。 我还想继续在导出对象的导出文件底部显式定义模块的导出API。 我一直在读默认导出是首
我看到ES6模块的公共导出是通过以下两种方式完成的: 这两个都有效吗? 如果是这样,为什么它们都存在? 使用ES6语法的模块导出还有其他有效的选项吗? 我很惊讶我还没能用我的谷歌找到答案。我只关心ES6模块,而不关心通用JS、要求JS、AMD、节点等。
在node的上下文中,我无法理解ES6模块。js。 假设我有一个简单的节点应用程序。它基于iisnode示例,但我在顶部添加了一个。 你好js: 这将导致在模块之外使用导入语句 但是如果我改名为hello。你好。mjs我收到以下错误: 对我来说似乎是个陷阱,有什么出路? (iisnode版本为0.2.26,节点版本为v13.8.0)
我正在尝试使用ES6模块在浏览器中导出和导入对象。 我试过了 但是我得到了错误。 然后我尝试转换它,但现在我收到错误。 在浏览器中不能使用模块吗?