웹사이트 검색
저는 두 개의 파일 a.ts와 b.ts가 있는 Typescript 프로젝트를 가지고 있습니다. 저는 a.ts에서 후자를 이렇게 가져옵니다
import * from "./b.js"이것은 잘 작동합니다. TypeScript가 이해합니다. 그러나 Jest(ts-jest 사용)를 실행할 때, 나는
Cannot find module './b.js' from 'a.ts'테스트를 실행할 때 .js로 가져온 파일
더 많은 것을 읽으십시오 →
아래 두 개의 기본 가져오기에서 왜 제목 오류가 발생하는지 잘 모르겠습니다:
// ./src/classes/FirestoreConnection.ts import admin, {firestore} from "firebase-admin"; import firebase from "firebase"; // TS1259: Module '"/home/owner/PhpstormProjects/shopify/project/node_modules/fi 더 많은 것을 읽으십시오 →저는 ESM 모듈을 내보내는 node_module 패키지에서 기본 import를 가져오고 있습니다. Jest/Babel 설정을 통해 SyntaxError: Unexpected token import 오류가 더 이상 발생하지 않도록 했지만, 모듈을 성공적으로 가져온 후에, 그 모듈이 빈 객체인 것으로 나타났습니다. 제 코드를 어떤 식으로 변환해야 할까요? (참고로, 제 앱에서는 import가 정상적으로 작동하고 있습니다.) (추가로, 혹시 차이가 있는지 몰라 첨언하자면, 저는 Create React App과 TypeScript를 사용하고 있습니다.)
jest.config.js
module.exports = { moduleNameMapper: { '\\.(css|less)$': 'identity-obj-proxy', }, preset: 'ts-jest', transform 더 많은 것을 읽으십시오 →저는 런타임에 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를
더 많은 것을 읽으십시오 →저는 Typescript로 NodeJs 라이브러리를 만들고 있으며 Node@14+를 지원할 계획입니다. 그래서 이 프로젝트를 CommonJs 대신 ESModule을 기반으로 하기로 결정했습니다. 이제 몇 가지 필요한 라이브러리가 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 파일
더 많은 것을 읽으십시오 →다음 tsconfig.json 플래그가 출시된 이후...
...저는 오직 ES6 표준화된 자바스크립트 모듈만 "TypeScript"로 작성해왔습니다. 제가 이해하기로는, 자바스크립트 문서에 "use strict";를 추가하는 것은 문서에 파싱 지시문을 추가하는 것과 같습니다
더 많은 것을 읽으십시오 →저는 상대 경로를 사용하지 않고 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 더 많은 것을 읽으십시오 →내 현재 사용 사례는 내 서비스에서 node-fetch를 사용하는 것이고, 최근 버전의 node-fetch (3.x)는 순수 ESM 모듈이기 때문에 나는 v2.x에 머물러야 하고 업데이트할 수 없다는 것입니다.
제 선택지는 제 서비스를 CJS에서 ESM으로 변환하거나 axios와 같은 다른 HTTP 클라이언트로 전환하는 것입니다. 두 옵션 모두 많은 노력이 필요하며, 어떤 옵션이 더 합리적인지 알아보려고 하고 있습니다.
그래서 제 질문은, 서비스가 이미 TypeScript로 작성되어 있다면 CJS에서 ESM으로 전환하는 데 어떤 이점이 있는지입니다.
더 많은 것을 읽으십시오 →저는 Node.js, React 기반의 Typescript 프로젝트를 가지고 있으며 Webpack5로 번들링되어 있습니다.코드베이스에는 서버 모듈(.ts), 클라이언트 모듈(.ts, .tsx), 공통 모듈(.ts)이 있습니다.지금까지 빌드하는 데 문제는 없었습니다.코드베이스를 ESM 모듈로 마이그레이션하기 시작했습니다.ESM을 지원하고 출력하도록 package.json과 tsconfig.json에 수정사항을 적용했습니다.모든 파일명을 *.ts에서 *.mts로 변경했고, *.tsx는 그대로 두었습니다.tsc는 예상 출력 확장자를 포함하도록 import를 변경하라고 요구했습니다.예를 들어 모듈 ./src/webapp/mainContextProviders.tsx에서는 Ty
더 많은 것을 읽으십시오 →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 모노레포가 사용됩니다. 이것은 어떤 오
더 많은 것을 읽으십시오 →