網站搜尋

node.js - Jest 無法解析 ESM 本地匯入

我有一個 Typescript 專案,有兩個檔案,a.ts 和 b.ts。我在 a.ts 中這樣匯入後者

import * from "./b.js"

這運作良好。Typescript 能理解。然而,當使用 ts-jest 執行 Jest 時,我得到

Cannot find module './b.js' from 'a.ts'

我如何讓 Jest 在運行測試時理解 .js 的導入仍然是 .ts 文件?

閱讀更多 →

typescript - esModuleInterop: true,但 TSLint 出現錯誤訊息:"只能在使用 'esModuleInterop' 標誌的情況下進行默認導入"

我不確定為什麼我在下面的兩個預設匯入中都收到標題錯誤:

// ./src/classes/FirestoreConnection.ts import admin, {firestore} from "firebase-admin"; import firebase from "firebase"; // TS1259: Module '"/home/owner/PhpstormProjects/shopify/project/node_modules/firebase/index"'

閱讀更多 →

reactjs - 為什麼當我在運行 Jest 並導入 ESM 模組時,我的模組是空的 {}?

我正在從一個導出 ESM 模組的 node_module 套件中導入預設匯入。我已經設置了 Jest/Babel,使其不再抱怨 SyntaxError: Unexpected token import,但現在模組成功導入後,發現模組是一個空物件。我需要以某種方式轉換我的代碼嗎?(附帶說明:可能不必多說,但在我的應用程式中這個匯入是正常工作的。)(附帶說明 2:我使用的是 Create React App 和 TypeScript,以防這有影響。)

jest.config.js

module.exports = { moduleNameMapper: { '\\.(css|less)$': 'identity-obj-proxy', }, preset: 'ts-jest', transformIgnorePatterns: ['node_modules/(?!(@micro-frontend-apps)/)'] // this successfully al

閱讀更多 →

node.js - 如何讓 @babel/register 轉譯 ESM 匯入?

我正在使用以下方法在運行時轉譯 TypeScript 文件。

import babelRegister from "@babel/register" babelRegister({ presets: [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript", ], extensions: [".tsx"], cache: false, })

一切都很順利,直到我嘗試將代碼庫從 CommonJS 遷移到 ESM。

根據 Sindre Sorhus 的說法,需要將 require 替換為 import,並在未指定副檔名時添加 .js(./src/routers/Static 指的是

閱讀更多 →

node.js - 在導出 ESModules 的 Typescript 專案中導入 CommonJS 模組

我正在用 TypeScript 製作一個 NodeJs 函式庫,我計劃讓它支援 Node@14+。所以,我決定將這個專案以 ESModule 為基礎,而不是 CommonJs。現在有一些函式庫是基於 CommonJs 的,我正在安裝它們的 @types。我的 TypeScript 檔案的匯入看起來是這樣的:

import { Command } from 'commander'; import inquirer from 'inquirer'; import { resolve } from 'path'; import { render } from 'mustache'; import { copySync, readdirSync, readFile, readFileSync, writeFile } from 'fs-extra';

而 tsconfig.json 看起來像這樣:

{ "include":

閱讀更多 →

typescript - 在 ESM 模組中從 'tsconfig.json' 中省略 --always-strict

ESM 與 "use strict"


自從釋出以下 tsconfig.json 標誌之後...

  • $ tsc --module "Node16"
  • $ tsc --moduleResolution "Node16"

...我一直只用 ES6 標準化的 JavaScript 模組來寫作,使用 "TypeScript"。據我所知,在 JavaScript 文件中加入 "use strict"; 就像是為文件添加了一個解析指令(它甚至可能真的是一

閱讀更多 →

node.js - 從專案根目錄匯入模組(Node 18 + TS + ESM)

我正在嘗試從我的 Node 專案根目錄導入模組,而不是使用相對路徑。 我使用的是 Node 18、ESM、Typescript,並且使用 ts-node-esm 執行它。

程式碼:

// import { number } from './check.js' // works import { number } from 'check.js' // does not work console.log(number)

錯誤:

~/Code/ts-esm (main)*$ yarn dev yarn run v1.22.19 ts-node-esm src/start.ts /home/rjurado/Code/ts-esm/node_modules/ts-node/src/index.ts:843 return new TSError(diagnosticText, diagnosti

閱讀更多 →

javascript - 如果我已經在我的 Node.js 服務中使用 TypeScript,切換到 ESM 有任何好處嗎

我目前的使用情境是我在服務中使用 node-fetch,而最近版本的 node-fetch(3.x)是一個純 ESM 模組,這意味著我將被限制在 v2.x,並且無法更新它。

我的選擇要麼是將我的服務從 CJS 轉換為 ESM,要麼是切換到其他 HTTP 客戶端,例如 axios。這兩個選項都需要大量的努力,我正在嘗試看看哪個選項更合理。

所以我的問題是,如果服務已經用 TypeScript 編寫,從 CJS 轉換到 ESM 有什麼好處嗎?

閱讀更多 →

將 webpack react-typescript 專案遷移到 ESM 模組

我有一個基於 Node.js、React 並使用 Webpack5 打包的 Typescript 專案程式碼庫包含伺服器模組(.ts)、客戶端模組(.ts、.tsx)以及共用模組(.ts)到目前為止,編譯一直都沒有問題我開始將程式碼庫遷移到 esm 模組已對 package.json 和 tsconfig.json 進行修改以支持並輸出 esm將所有檔名從 *.ts 改為 *.mts,*.tsx 保持不變tsc 強制我在匯入時加入預期的輸出副檔名例如,在模組 ./src/webapp/mainContextProviders.tsx 中,要從 typescript 模組匯入時:

../common/utils.mts (former ../common/utils.ts) ./Settings/SettingsCon

閱讀更多 →

javascript - 如何修復 require() 不支援 ES 模組 /dir/node_modules/@angular/core/fesm2015/core.mjs

在 VsCode 上,我安裝了 Quokka.js 擴充功能。我嘗試在一個 TypeScript 檔案上執行它,並收到了以下錯誤:

require() of ES Module /project/node_modules/@angular/core/fesm2015/core.mjs not supported.  Instead change the require of /project/node_modules/@angular/core/fesm2015/core.mjs to a dynamic import() which is available in all CommonJS modules.  ​​​​​at ​​​​​​​​Object.<anonymous>​​​ ​libs/features/orders/src/lib/components/order-list.component.ts:1

這個專案使用的是 Nx monorepo。這是哪一個錯誤,我該如何修復它?

閱讀更多 →