从一个对象导入属性

问题描述:

我想从一个函数文件中导入一个函数。函数文件看起来像这样。从一个对象导入属性

const Functions = { 
    url(path = '') { 
     path = path.replace(/^\/+/, ''); 
     return `${document.baseURI}/${path}`; 
    }, 

    asset(path = '') { 
     return this.url(path); 
    } 
}; 

export default Functions; 

然后我尝试导入url这样的功能。

import {url} from "../Utils/Functions"; 

当我这样做时,我从浏览器中得到以下错误。

Uncaught TypeError: (0 , _Functions.url) is not a function

MDN文档,这应该进口作为工作是urlFunctions对象。

我在做什么错?

+0

'从“../ Utils/Functions”中导入url;'会为你工作 –

你做了什么 - 导出一个对象。

在您需要导入的对象并访问其属性,它的情况:

import Functions from "../Utils/Functions"; 
Functions.url(); 

如果你想命名的出口 - 你需要改变你导出和定义的方式:

function url(path = '') { 
    path = path.replace(/^\/+/, ''); 
    return `${document.baseURI}/${path}`; 
} 

function asset(path = '') { 
    return this.url(path); 
} 

export { url, asset }; 

export function url(path = '') { 
    path = path.replace(/^\/+/, ''); 
    return `${document.baseURI}/${path}`; 
} 

export function asset(path = '') { 
    return this.url(path); 
} 

至于另注:这是不是解构,即使它看起来simil AR。该标准将其命名为ImportsList并定义了自己的语义,与解构之一不同。

参考文献:

+1

我错误地认为可以使用解构一个导入的对象。 – Enijar

+2

@Enijar事情就是这样 - 它不是解构,即使它看起来有些类似。 – zerkms

如果使用 '默认导出',那么进口应该是:

import Functions from "../Utils/Functions"; 

实际上,你可以用你喜欢的任何标识符来导入它(不仅仅是'函数')