使用ES6语法和dynamicpath导入模块

这工作:

import app from './../app.js'; 

但是这不是:

 import app from path.join(process.cwd(), 'app'); 

我越来越:

 SyntaxError: /path/file.js: Unexpected token (5:16) > 5 | import app from path.join(process.cwd(), 'app'); | ^ 

有可能(和/或如何)使用“dynamic”path? (不要硬编码path或依赖相对path)。

不,这是不可能的。 ES6模块需要能够静态地解决它们的依赖性,而不需要执行模块代码,这样import语句就可以可靠地工作。 模块说明符必须是string文字。

但是,您所select的模块加载器应支持dynamic加载具有variables名称的模块。 您将无法在模块范围内获得绑定的app标识符(并且无法将其重新导出),但通常只能在callback中使用。

ES6import是声明式的,意味着静态分析。 他们不能dynamic。

一般来说,如果你有一些条件input,那么期望就是基础pathparsing逻辑的责任,根据某个静态path来决定加载哪个模块。

这或者你会使用asynchronous模块加载器而不是声明式导入。