使用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模块加载器而不是声明式导入。