Différence entre URL et file path.

Un chemin d'accès est une chaîne de caractères qui spécifie l'emplacement d'un fichier dans un système de fichiers. Il peut être absolu ou relatif. Voici un exemple de lecture d'un fichier à l'aide d'un chemin d'accès dans Node.js :

Une URL (Uniform Resource Locator) est une référence à une ressource web qui spécifie son emplacement sur un réseau informatique et un mécanisme pour la récupérer. 

Dans Node.js, vous pouvez également utiliser les URL pour les chemins d'accès aux fichiers, ce qui est particulièrement utile pour les projets de développement. 

import { readFile } from 'fs/promises';
import { fileURLToPath } from 'url';
import { dirname } from 'path';

// URL for the current module
const currentModuleURL = new URL(import.meta.url);

// Convert the URL to a file path
const currentModulePath = dirname(fileURLToPath(currentModuleURL));

// Use the file path to read a file
const data = await readFile(`${currentModulePath}/2024-03-14-feed.json`, 'utf8');
console.log(data);

Dans ce deuxième exemple, import.meta.url fournit une URL pour le module en cours. Cette URL est ensuite convertie en chemin de fichier à l'aide de fileURLToPath, et le chemin de fichier est utilisé pour lire un fichier.

🥷La principale différence entre les deux est que les chemins d'accès aux fichiers sont spécifiques au système de fichiers et sont utilisés pour lire/écrire des fichiers, tandis que les URL sont plus généraux et peuvent être utilisés pour localiser des ressources sur Internet ou sur un réseau local, en plus du système de fichiers local.


high level await

 Exemple voir code

Cors : so simple

const cors = require('cors');

app.use(cors({ origin: /http:\/\/(127(\.\d){3}|localhost)/})); 

app.options('*', cors());


On remarque la regExp :  http:\/\/(127(\.\d){3}|localhost)

Soit  http:\/\/(127(\.\d){3} cad http://127.nb.nb.nb 

ou localhost

__dirname

 

__dirname 

n'est pas reconnu lorsque l'on passe en version de module EJS. Voici deux solutions possibles.

🪛Redéfinir __dirname 
import { dirname } from "path";
import { fileURLToPath } from "url";

const __dirname = dirname(fileURLToPath(import.meta.url)); 
const data = await readFile(__dirname + path);


🪛Oublier __dirname 

import { URL } from "node:url";
const data = await readFile(new URL(path, import.meta.url));

DATE

const timestamp = new Date().getTime();
console.log(timestamp)

let DAY_FORMATTER = new Intl.DateTimeFormat(undefined, { weekday: "long",
month: "long" })
console.log(DAY_FORMATTER.format(timestamp))

DAY_FORMATTER = new Intl.DateTimeFormat(undefined, { dayPeriod: "short"
, weekday: "short", year: "numeric"
, month: "short", day: "numeric" })
console.log(DAY_FORMATTER.format(0))

Les valeurs possibles : 
{
  weekday: 'narrow' | 'short' | 'long',
  era: 'narrow' | 'short' | 'long',
  year: 'numeric' | '2-digit',
  month: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
  day: 'numeric' | '2-digit',
  hour: 'numeric' | '2-digit',
  minute: 'numeric' | '2-digit',
  second: 'numeric' | '2-digit',
  timeZoneName: 'short' | 'long',

  // Time zone to express it in
  timeZone: 'Asia/Shanghai',
  // Force 12-hour or 24-hour
  hour12: true | false,
}

vite

npm create vite@latest

npm i

npm run dev



debug

 

cmd

set DEBUG=baseRange:arg,http & node app.js

 

git bash 

Si votre terminal est git bash lancer : 

DEBUG=baseRange:arg,http node app.js

 

PowerShell

Si votre terminal est PowerShell lancer : 

$env:DEBUG='baseRange:arg,http' ; node app.js