使用加载程序ts-node / esm.js运行节点需要导入以具有.js扩展名

dagda1:

我正在尝试将package.json设置为模块来运行节点14:

"type": "module",

如果我在打字稿文件上运行此命令:

 node --loader ts-node/esm.mjs --experimental-top-level-await ./src/scripts/ts-build.ts --trace-warnings --experimental-json-modules

我在打字稿文件中有这样的无扩展名导入

import { logger } from './logger';

我懂了

ERR_MODULE_NOT_FOUND

但是如果我将其更改为

import { logger } from './logger.js';

有用。

为什么是这样?

eol:

如果我们看一下规格,则本节指出:

当前的说明符分辨率不支持CommonJS加载程序的所有默认行为。行为差异之一是文件扩展名的自动解析以及导入具有索引文件的目录的能力。

还有另一指出:

使用import关键字时,必须提供文件扩展名。目录索引(例如'./startup/index.js')也必须完全指定。

因此,似乎扩展实际上是必需的。Howvever,有个选项 --experimental-specifier-resolution,你可以尝试设置到--experimental-specifier-resolution=node

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用node.js获取具有特定文件扩展名的文件列表?

使用ESM时如何在Node.js中自动重新加载文件?

javascript-如何使用强大功能在Node JS中获取文件扩展名?

如何使用node.js查找文件扩展名更改?

使用multer在node.js(express)中上传后保留图像文件名和扩展名

gzip 压缩中的 Node.js 文件扩展名

Node.js获取文件扩展名

Node.js获取文件扩展名

检测 NODE.JS 脚本是通过 bash (unix) / cmd (windows) 直接调用还是导入(ESM 模块加载器)

是否可以使Node不需要“ .js”扩展名来导入?

在页面加载时以chrome扩展名运行js脚本

在不使用文件扩展名的情况下使用Node.JS在浏览器中显示json文件

如何使用multer和node js在不检查文件扩展名的情况下确定文件的真实类型

无法运行我的Node.js Typescript项目TypeError [ERR_UNKNOWN_FILE_EXTENSION]:/app/src/App.ts的文件扩展名“ .ts”未知

在ES6 Node.js中导入'.json'扩展名会引发错误

如果有人通过Node JS应用程序中的multer将扩展名从exe更改为png,则不应允许文件上传

将 esm 模块与 ts-node 一起使用

获取Node.js中没有扩展名的文件的MIME类型

导入路径不能以“.ts”扩展名结尾。考虑导入“src/theme.js”

ESM无法使用index.js从文件夹导入所有文件

如何使用异步ESM导入获取ESM模块

如何将Node.js项目模板或扩展名添加到VisualStudio?

node.js无法识别自己的扩展名而不是JSON

在上载整个文件之前先验证文件扩展名(node.js)

匹配文件扩展名-正则表达式Node.js

使用Jasmine或任何其他替代方案在Node上运行测试.mjs / ESM

Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误“ERR_REQUIRE_ESM”

./node_modules/@angular/material/esm2015/select.js中的错误

将文件扩展名从js更改为ts后,ionic无法再找到模块