javascript 在ES6中使用import从cwd()读取

k10s72fa  于 2022-10-30  发布在  Java
关注(0)|答案(3)|浏览(148)

在ES5中是这样的UserInfoModel = require(process.cwd() + '/server/models/Users');
如何在ES6中编写相同的内容?这不起作用import { UserModel } from '/server/models/User';
我不想这样做。有更好的方法吗?[下面的作品btw] import { UserModel } from '../../../server/models/User';

qzlgjiam

qzlgjiam1#

在与其他渠道的导师讨论后,答案是--这不可能。ES6对ES 5的优化之一是导入必须是严格静态可分析的。因此它不能依赖于任何变量。
避免丑陋代码的选项
1.使用这个令人敬畏的插件https://github.com/tleunen/babel-plugin-module-alias(这是我最终做的)
1.重新排列文件
1.如果必须使用动态变量,请使用require:)
谢谢你!

3ks5zfa0

3ks5zfa02#

是更好的方法!您的脚本和这个子存储库(也扩展您的全局应用程序)非常封装:您可以将脚本(和子脚本)移动到其他目录,而不更改所有路由,创建npm包(并推送到npm)运行到其他环境(生产服务器)。在大多数情况下,如果没有path.joinpath.resolve,则将字符串串连接在一起不是最佳做法

eqzww0vc

eqzww0vc3#

现在回到这个问题,2022年,有一个选项是动态import()

const UserInfoModel = await import(`${process.cwd()}/server/models/Users`);

警告

这是异步的(使用await关键字),所以需要将其添加到async函数中。或者,如果您想将其添加到顶级(函数之外),另一个选择是使用支持顶级等待的运行时或转发器:

相关问题