אני לא בטוח למה אני מקבל את שגיאת הכותרת בשתי ייבואויות ברירת המחדל למטה:
// ./src/classes/FirestoreConnection.ts import admin, {firestore} from "firebase-admin"; import firebase from "firebase"; // TS1259: Module '"/home/owner/PhpstormProjects/ קרא עוד →אני מייבא את הייבוא ברירת המחדל מחבילה ב-node_module שמייצאת מודול ESM. הגדרתי את Jest/Babel שלי כך שהוא הפסיק להתרעם על SyntaxError: Unexpected token import, אבל עכשיו כשהייבוא של המודול מצליח, מתברר שהמודול הוא אובייקט ריק. האם אני צריך לשנות את הקוד שלי בצורה מסוימת? (נ.ב. כנראה שזה ברור מאליו, אבל הייבוא עובד טוב באפליקציה שלי.) (נ.נ.ב. אני משתמש ב-Create React App ו-TypeScript, למקרה שזה משנה משהו.)
jest.config.js
module.exports = { mod קרא עוד →אני משתמש בזה כדי להמיר קבצי TypeScript בזמן ריצה.
import babelRegister from "@babel/register" babelRegister({ presets: [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript", ], extensions: [".tsx"], cache: false, })הכל עבד בסדר עד שניסיתי להעביר את בסיס הקוד מ-CommonJS ל-ESM.
לפי סינדרה סורהאוס, צריך להחליף את require ב-import ולהוסיף
קרא עוד →אני יוצר ספריית NodeJs ב-Typescript ואני מתכנן שהיא תתמוך ב-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...
...אני כותב רק מודולי JavaScript לפי התקן ES6, ב-"TypeScript". אני מבין שהוספת "use strict"; למסמך JavaScript
קרא עוד →אני מנסה לייבא מודול משורש פרויקט ה-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.t קרא עוד →שימוש המקרה הנוכחי שלי הוא שאני משתמש ב-node-fetch בשירות שלי והגרסה האחרונה של node-fetch (3.x) היא מודול ESM טהור, מה שאומר שאני אהיה תקוע בגרסה 2.x ולא אוכל לעדכן אותה.
האפשרויות שלי הן או להמיר את השירות שלי ל-ESM מ-CJS או לעבור ללקוח HTTP אחר כמו axios. שתי האפשרויות דורשות הרבה מאמץ ואני מנסה לראות איזו אפשרות הגיונית יותר.
אז השאלה שלי היא האם יש יתרון למעבר מ-CJS ל-ESM אם השירות כבר נכתב ב-TypeScript?
קרא עוד →יש לי פרויקט Typescript מבוסס על nodejs, React ושהוא נארז עם Webpack5 בסיס הקוד מכיל מודולים של שרת (.ts), מודולים של לקוח (.ts, .tsx) ומודולים כלליים (.ts) עד כה לא היו בעיות בבנייה התחלתי להעביר את בסיס הקוד למודולי ESM יישמתי תיקונים ב-package.json וב-tsconfig.json כדי לתמוך ולהפיק ESM החלפתי את כל שמות הקבצים מ-*.ts ל-*.mts, והשארתי את *.tsx כפי שהם tsc הכריח אותי לשנות את הייבוא כך שיכלול
קרא עוד →ב-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פרויקט זה משתמ
קרא עוד →אני מנסה להשתמש ב-ESM עם TypeScript ו-Webpack במונורפו של NX. אחרי קצת קונפיגורציה, אני מצליח להמיר ל-ESM עם tsc. בשביל זה, הייתי צריך להוסיף ".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' re קרא עוד →