在ES5中是这样的UserInfoModel = require(process.cwd() + '/server/models/Users');
如何在ES6中编写相同的内容?这不起作用import { UserModel } from '/server/models/User';
我不想这样做。有更好的方法吗?[下面的作品btw] import { UserModel } from '../../../server/models/User';
在ES5中是这样的UserInfoModel = require(process.cwd() + '/server/models/Users');
如何在ES6中编写相同的内容?这不起作用import { UserModel } from '/server/models/User';
我不想这样做。有更好的方法吗?[下面的作品btw] import { UserModel } from '../../../server/models/User';
3条答案
按热度按时间qzlgjiam1#
在与其他渠道的导师讨论后,答案是--这不可能。ES6对ES 5的优化之一是导入必须是严格静态可分析的。因此它不能依赖于任何变量。
避免丑陋代码的选项
1.使用这个令人敬畏的插件https://github.com/tleunen/babel-plugin-module-alias(这是我最终做的)
1.重新排列文件
1.如果必须使用动态变量,请使用
require
:)谢谢你!
3ks5zfa02#
是更好的方法!您的脚本和这个子存储库(也扩展您的全局应用程序)非常封装:您可以将脚本(和子脚本)移动到其他目录,而不更改所有路由,创建npm包(并推送到npm)运行到其他环境(生产服务器)。在大多数情况下,如果没有
path.join
或path.resolve
,则将字符串串连接在一起不是最佳做法eqzww0vc3#
现在回到这个问题,2022年,有一个选项是动态
import()
:警告
这是异步的(使用
await
关键字),所以需要将其添加到async
函数中。或者,如果您想将其添加到顶级(函数之外),另一个选择是使用支持顶级等待的运行时或转发器: