웹사이트 검색

javascript - Webpack이 ESM 모듈의 import를 해결할 수 없습니다

저는 nx 모노레포에서 TypeScript와 Webpack으로 ESM을 사용하려고 하고 있습니다. 몇 가지 설정 후, tsc로 ESM으로 트랜스파일할 수 있게 되었습니다. 이를 위해 상대 경로 임포트에 '.js'를 추가해야 했습니다.

import { AppModule } from './app/app.module.js';

이제 webpack을 사용하려고 하니, 이것이 ESM이라는 것을 감지하지 못하는 것 같습니다. 제가 받고 있는 오류는 다음과 같습니다:

ERROR in ./apps/nxnest/src/main.ts 9:0-48 Module not found: Error: Can't resolve './app/app.module.js' in '/home/gabriel/tmp/nxnest/apps/nxnest/src' resolve './app/app.module.js' in '/home/.../tmp/

더 많은 것을 읽으십시오 →

typescript - ESM에서도 모듈 외부에서 import 문을 사용할 수 없음

그래서 저는 NPM에 게시한 라이브러리에 의존하는 애플리케이션이 있습니다. 새로 생성한 NextJs 애플리케이션에서 이 라이브러리를 가져오면 다음과 같은 오류가 발생합니다.

error - /Users/apple/testing-build/node_modules/foobar/dist/some-library.es.js:1 import t, { useState as M } from "react"; ^^^^^^ SyntaxError: Cannot use import statement outside a module at Object.compileFunction (node:vm:360:18) at wrapSafe (node:internal/modules/cjs/loader:1094:15) at Module._compile (node:internal/modules/cjs/loader:1129:27) ...

더 많은 것을 읽으십시오 →

자바스크립트 - ESM 파일을 가져오는 Jest TS 테스트에서 exports에 ReferenceError 발생

내 애플리케이션에서 파일을 가져오지 않으면 ts-jest 변환을 사용하여 Typescript 테스트 파일이 완벽하게 작동합니다 (Windows 11, jest 29.4.2, node 18.13.0).

하지만 내 애플리케이션에서 파일을 가져오면(타입스크립트 소스에서 컴파일된 ESM js 파일) 가져오기 라인에서 다음 오류와 함께 실패합니다: ReferenceError: exports is not defined

import {Configuration} from "../server/ServerConfiguration.js"; describe("ServerConfiguration", () => { test("Defaults", () => { const sc = Configuration.getInstance(true

더 많은 것을 읽으십시오 →

javascript - Nx를 사용하여 ESM으로 NestJS를 작동시키는 방법

이것은 순수 NestJS로 잘 작동하는 예제입니다 https://github.com/robertIsaac/nest-esm

이것은 NX와 함께하는 NestJS 예제인데 작동하지 않습니다 https://github.com/robertIsaac/nx-nest-esm

나는 이미 nx에 이슈를 열었습니다 https://github.com/nrwl/nx/issues/19618, 한 달이 지났지만 그들은 여전히 수정하지 않았고 더 많은 주가 필요하다고 말하며 작동하지 않는 우회 방법을 제시했습니다

번식하는 방법

  1. npx create-nx-workspace@latest를 사용하여 새로운 nx 워크스페이스를 생성하세요
  2. 루트 package.json에 "type": "module"를 추가하세요

더 많은 것을 읽으십시오 →

node.js - NX 작업 공간을 ESM 사용으로 마이그레이션하기

저는 큰 NX 기반 모노레포를 가지고 있습니다. 여섯 개 정도의 앱, 프론트엔드, 백엔드, 수십 개의 라이브러리가 있습니다. 여전히 모두 commonjs 모듈 타입으로 작동하도록 설정되어 있는데, 이는 NX 생성기가 항상 생성해 왔고 지금도 그렇게 하기 때문입니다.

하지만 점점 더 많은 라이브러리가 'ESM 전용' 버전을 출시하고 있으며, 이는 이 모노레포에서는 전혀 작동하지 않습니다.

저는 방금 nx migrate latest를 완료했으며, NX 17, TypeScript 5.2, Angular 17을 사용 중인데, commonjs는 그냥 그대로 있는 것 같습니다.

수동으로 업그레이드하려는 시도는 모두 실패했습니다. 하나의 오류를 수정할 때마다 다음 오류가 발생하며, 종종 1천 개 이상의 임포트나 수백 개의 파일에 대한 대규모 변경이 필요하고 결과는 불확실합니다.

마이그레이션 방법에 대해 제가 놓치고 있는 문서가 있나요?

더 많은 것을 읽으십시오 →

현재 Vite ReactJS와 Typescript에서는 "Wasm용 ESM 통합 제안"이 지원되지 않습니다

저는 ReactJS와 Typescript를 Vite와 함께 사용하고 있으며, mnemonic에서 주소를 얻고 싶습니다. 이를 위해 mnemonic 문자열을 매개변수로 받는 generateAddressFromMnomic 함수를 만들었습니다. 하지만 tiny-secp256k1에서 가져온 ecc를 BIP32Factory에 적용해 const bip32=BIP32Factory(ecc)를 사용할 때 Vite 오류 "ESM integration proposal for Wasm" is not supported currently in vite react and typescript가 발생합니다. 아래 이미지에 표시된 오류입니다. wasm을 설치하고 vite 플러그인과 함께 구성하여 해결하려고 했지만 동일한 오류가 발생했습니다. 이 문제를 bitcoinjs-lib, bip32, bip39를 사용하여 어떻게 해결할 수 있을까요?

더 많은 것을 읽으십시오 →

타입스크립트 - Electron Forge + ESM

저는 Electron Forge로 생성된 프로젝트가 ESM과 함께 작동하도록 만들려고 노력하고 있습니다.

이 시점에서, ESM은 거의 필수입니다. 필요한 라이브러리들이 오직 ESM으로만 내보내고 있으며, 오래된 라이브러리를 사용하는 것은 허용되지 않기 때문입니다. 또한, CommonJS에서 작동하게 하기 위해 해킹, 포크, 이상한 임포트(예: import-sync)를 사용하는 것도 피하고 싶습니다.

그래서 현재 상태는 Electron이 v28부터 ESM을 지원하도록 되어 있습니다. Forge는 Electron에서 제공하는 패키징 도구입니다(레포는 electron/forge에 있습니다) 그러나 forge.config.ts 파

더 많은 것을 읽으십시오 →

node.js - Jest가 jest.config 파일(스펙 파일이 아닌)을 ESM으로 읽게 하려면 어떻게 하나요?

저는 Jest로 제 ESM .spec 파일들을 실행할 수 있습니다. 제 질문은 .spec.ts 파일들이 아니라 jest.config.ts 파일 자체를 CommonJS 대신 ESM으로 불러오는 것에 관한 것입니다.

파일 jest.config.ts은 strip-json-comments와 같은 ESM 모듈을 가져옵니다(버전 > 4.0은 ESM만 지원합니다).

jest.config.ts:

import strip from 'strip-json-comments' export default function config(){ // call the esm function strip(...); }

이로 인해 다음 오류가 발생합니다:

Error:

더 많은 것을 읽으십시오 →

node.js - nest에서 esModule을 어떻게 가져오나요?

import { Injectable, OnModuleInit } from '@nestjs/common'; @Injectable() export class PotatoService implements OnModuleInit { constructor() {} async onModuleInit(): Promise<void> { const chalk = (await import('chalk')).default; console.log(chalk.blue('potato service init')); } }

나는 import()를 사용하려고 하지만, 오류가 발생한다

node:internal/process/promises:289 triggerUncaughtException(err, true /* fromPromise */); ^ Error

더 많은 것을 읽으십시오 →

javascript - Jest: ESM을 내보내는 의존성과 함께 'export'라는 예상치 못한 토큰

이 문제가 해결하기 매우 간단해 보이고 비슷한 문제를 언급한 글들도 있었지만, 여기 질문하기 전에 가능한 모든 것을 시도했습니다. 이 문제는 여전히 지속됩니다.

내가 겪는 오류

저는 몇 가지 패키지가 있는 TS 모노레포를 가지고 있으며, 그 중 하나는 @repo/db-client입니다. 이것을 제 노드 패스트파이 백엔드에서 가져와 테스트를 합니다. 단순성을 위해 그리고 문제를 보여주기 위해, 다음과 같이 제 테스트라고 합시다:

import { expect, test } from "@jest/globals"; import { userSessionTable } from "@repo/db-client"; test("Test if I can access this table", () => { expe

더 많은 것을 읽으십시오 →