我无法让 export default { multiple, functions } 工作。
这是我的设置:
src/index.js
:
import {foo} from './foo'
foo();
foo.js
:
const foo = () => {
console.log("Hello!");
}
export default {foo};
和我的package.json
:
{
"name": "jestjs.io",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "babel-node src/index.js",
"test": "jest"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/node": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"babel-jest": "^24.8.0",
"jest": "^24.8.0",
"nodemon": "^1.19.1"
}
}
当我运行 npm start
时,我收到以下错误消息:
/src/index.js:5
(0, _foo.foo)();
^
TypeError: (0 , _foo.foo) is not a function
但是,如果我 export default foo
和 import foo
没有花括号 {foo}
,它会执行并且我得到 你好!
打印到终端。
我做错了什么?
最佳答案
您使用了默认导出并尝试使用命名导入语法访问它,这是不可能的,因此您需要首先导入默认导出:
import fooObj from '/.foo'; // {foo: f}
然后你可以访问你的foo
函数:
fooObj.foo(); // Hello
或者您可以使用 Object destructuring
如果对象包含多个属性:
import fooObj from '/.foo'; // {foo: f, bar: f}
const { foo, bar } = fooObj;
foo();
bar();
您还可以在不使用 {}
的情况下导出 foo
:
const foo = () => {
console.log("Hello!");
}
export default foo;
然后像这样导入:
import foo from './foo';
foo(); // Hello
或者您可以使用命名导出:
export const foo = () => {
console.log("Hello!");
}
然后:
import {foo} from './foo';
foo(); // Hello
关于javascript - export default { foo, bar } 在带有 babel 的 node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738057/