Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点14:使用本机ES6模块的绝对路径导入模块_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

Javascript 节点14:使用本机ES6模块的绝对路径导入模块

Javascript 节点14:使用本机ES6模块的绝对路径导入模块,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我正在node14.9.0中编写一个应用程序。我已经创建了一个ES6模块,在我的包.json中添加了“type”:“module”。我正在尝试为我的项目导入模块。我希望避免使用相对导入(因为。/../非常可读),而是希望使用绝对导入,就像每个模块都是从项目根目录中的index.js文件导入一样 根据我收集的关于node如何发现模块的信息,在导入路径前面省略,应该会使node默认为从项目的根目录中查找模块。然而,它却试图从我的硬盘的根来看 。。。 从“/models/User.model”导入用户

我正在node
14.9.0
中编写一个应用程序。我已经创建了一个ES6模块,在我的
包.json
中添加了
“type”:“module”
。我正在尝试为我的项目导入模块。我希望避免使用相对导入(因为
。/../
非常可读),而是希望使用绝对导入,就像每个模块都是从项目根目录中的
index.js
文件导入一样

根据我收集的关于node如何发现模块的信息,在导入路径前面省略
,应该会使node默认为从项目的根目录中查找模块。然而,它却试图从我的硬盘的根来看

。。。
从“/models/User.model”导入用户;
...
错误[ERR\u MODULE\u NOT\u FOUND]:找不到从C:\Users\user\Documents\My App\My App\index.js导入的模块“C:\models\user.model”

我没有使用打字脚本,网页包,巴贝尔,或任何其他传输。是否可以在没有它们的情况下获得绝对导入?

因为缺少
*.js
扩展名。ECMA节点模块()需要它。这将是一项工作(现在我正在节点14中开发,没有Babel):

在root package.json中,您必须添加:

"type": "module"

“在导入路径前面省略.from应该使节点默认为从我的项目.t的根查找模块”。不,那是不对的。如果路径以
/
开头,那么它将从驱动器的根开始,就像任何操作系统功能的路径一样。没有前缀使其从项目的根开始。模块不了解您的项目。他们只知道自己(在这方面他们是独立的)和当前的工作目录(根据程序的启动方式可能会有所不同)。如果你想相对于你的模块目录,然后,您需要在提升一个或多个级别的路径中使用
/
或一个或多个
。/
。在这种情况下,您建议如何设置绝对导入?@Nostupidquestions如果您希望相对于项目文件夹解决这些问题,则这不是绝对导入。您可以从“models/User.model”编写
导入用户,并告诉您的模块加载程序从哪个位置解决该问题。对于绝对导入(通常不是您想要的),您只需放置完整路径,甚至包括驱动器。如果您向我们显示一个目录层次结构,其中显示了目标模块所在的位置以及您试图导入的模块所在的位置,那么我们可以帮助您创建一个相对路径,该路径不依赖于项目在驱动器上的安装位置。或者,如果您确实想要绝对,我们也可以演示如何进行绝对导入,但您尚未向我们展示硬盘上的任何内容,因此我们无法提供更具体的建议。这似乎不起作用。如果我使用它,我会得到一个错误
找不到模块'C:\models\uploader.model.js'
,您是否将该文件保存在C:\models\uploader.model.js中?您的package.json文件的
“type”:“module”
?不,package.json文件位于我的文档中的项目文件夹中。如果我导入时没有
,它会尝试从
C://
获取模块,而模块不在它们所在的位置。package.json文件具有
“类型”:“模块”
。您应该使用相对路径示例
。/../uploader.model.js
。相对于包含该模型的文件。
"type": "module"