Node.js ES6中的export/import与index.js

7
我有以下文件夹结构。
src/
  index.js
  lib/
    test.js
dist/
examples/
  example.js

src/lib/test.js

export default class Test {}..

src/index.js

import App from './lib/test.js'
export default App

examples/example.js

import {App} from './../..'

=> App is undefined

如何将我的 index.js 设置为入口点并在那里导出我的应用程序?
编辑: 我正在使用 babel-node 作为转译器,并通过以下方式启动它:
nodemon test.js --exec babel-node --presets es2015,stage-2 --watch ./../..

1
难道不应该是 from '../src' 而不是 from './../..' 吗? - Ry-
你向我们展示了 export class Test,但没有默认导出。我认为 export {default as App} 也无法有效执行该操作,是吗? - Ry-
1
你正在导出默认的内容,但是却在导入名为App的内容,而这个内容并不存在。 - Estus Flask
@estus 谢谢,现在它不再是未定义的了! - user345234674567
2个回答

3

importexport不是Node的本地支持。

如果您想使用这种语法,您需要使用像Babel这样的转译器。

Node的方法是使用module.exportsrequire()

有关更多信息,请参见:

更新

在这里:

export {default as App} from './src/lib/test.js'

您没有导出“from” - 您是从中导入的。也许您的意思是:
import App from './src/lib/test.js';

然后您可以进一步导出。

使用标准的Node语法,代码如下:

src/lib/test.js

class Test {
  // ...
}
module.exports = { Test };

src/index.js

const { Test: App } = require('./lib/test.js');

examples/example.js

const { App } = require('../src');

还要注意根据你的目录结构,你的路径不正确:应该是./lib/test.js而不是./src/lib/test.js../src而不是./../..


1
但是那样操作者会得到语法错误,而不是 undefined,对吧? - Felix Kling
我正在使用babel-node作为转译器,以"nodemon test.js --exec babel-node --presets es2015,stage-2 --watch ./../.."的方式启动它。 - user345234674567
1
如果您在问题中首先包含相关信息,回答您的问题会更容易。@coffeecup - rsp
我在test.js文件中将export class更改为“export default”,并将export from更改为import test from在我的index.js中,现在当我console.log(test)时,我可以看到[Function:App]。我该如何正确导出它以便能够在example.js中导入它? - user345234674567
我的 index.js 导入了 Test,然后默认导出 Test,但在我的 example.js 中它仍然是未定义的。 - user345234674567

1

我建议在package.json中将src/index.js设置为主文件,然后直接运行nodemon而不带watch参数。

默认情况下,nodemon会监视当前工作目录。如果您想控制该选项,请使用--watch选项添加特定路径

此外,路径应该像这样:

src/lib/test.js

export default class Test {}

src/index.js

export {default as App} from './lib/test.js'

examples/example.js

import {App} from '../'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接