相关疑难解决方法(0)

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

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

"type": "module",
Run Code Online (Sandbox Code Playgroud)

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

 node --loader ts-node/esm.mjs --experimental-top-level-await ./src/scripts/ts-build.ts --trace-warnings --experimental-json-modules
Run Code Online (Sandbox Code Playgroud)

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

import { logger } from './logger';
Run Code Online (Sandbox Code Playgroud)

我明白了

ERR_MODULE_NOT_FOUND

但如果我把它改成

import { logger } from './logger.js';
Run Code Online (Sandbox Code Playgroud)

有用。

为什么是这样?

javascript node.js typescript es6-modules

9
推荐指数
2
解决办法
9882
查看次数

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

Node 现在内置了对导入的支持,这非常棒。但该支持要求您指定文件扩展名,这很烦人。

我确信这是有一定道理的(可能与他们对扩展的奇怪痴迷有关.mjs),但是有什么方法可以解决它并让import工作“像平常一样”(你可以停止.js)?

node.js es6-modules

7
推荐指数
1
解决办法
6158
查看次数

省略文件扩展名,ES6 模块 NodeJS

我正在尝试处理 Node 和 ES 模块。特别是如何/是否可以从导入语句的路径字符串值中省略文件扩展名(并且可以选择让 VSCode 自动完成这些路径)。

我知道您可以为文件提供.mjs扩展名或"type" = "modules"在其中设置,package.json但这两种方法都会导致以下问题。

  1. 如果文件扩展名为.mjs,VSCode 不会自动完成路径,如果文件扩展名为.js. 但是,如果是.js自动完成,则会从字符串中省略扩展名,并且导入将失败,直到我手动添加它为止。
  2. 尝试graphql在我自己的模块中使用类似的库也失败了,因为.mjsgraphql 模块中文件之间的所有导入语句都被写入省略了字符串中的扩展名。

所以...什么时候不包括对 ES6 模块导入有效的扩展,并且无论如何都可以通过 NodeJS 启用此条件?

javascript node.js es6-modules

7
推荐指数
1
解决办法
2346
查看次数

如何在 node.js 中使用 es6 模块

我正在尝试使用 ES6 语法将 express 导入我的项目,但它一直给我错误:

import express from "express";
SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现人们说要添加的地方:

“类型”:“模块”

到我已经完成的 package.json 文件:

...
"description": "Shopping list to learn the MERN stack",
  "type": "module",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "server": "nodemon server.js"
  },
...
Run Code Online (Sandbox Code Playgroud)

But I'm still getting the same issue. I would prefer to use the import ES6 syntax rather than this syntax.

const express = require('express')
Run Code Online (Sandbox Code Playgroud)

node.js express ecmascript-6

3
推荐指数
2
解决办法
7554
查看次数