Node.js process.chdir()

Node.js process.chdir()
2021-10-08T11:35:36+02:00
2021-10-15T21:28:53+02:00
2022-10-15T21:21:40+02:00
Tipti
Sziasztok,

Node.js-ben szeretném a windows-os munkakönyvtárat beállítani. Találtam erre egy lib-et - process, aminek van egy metódusa - chdir - DE NEM MÜXIK :(

A js-em kódja:
import { chdir, cwd } from 'process';

        console.log('Starting directory:' + process.cwd());
        try {
            process.chdir('/Temp');
            console.log('New directory:' + process.cwd());
        } catch (err) {
            console.error('chdir:' + err);
        }

VSCode IDE-t használok. Ha megnézem vele a process.chdir definicióját, akkor elhűlve látom, hogy ez a metódus ÜRES, nincs implementálva ?!? A cwd is mindig fix-en beégetve a gyökeret adja vissza :(

browser.js:

process.cwd = function () { return '/' };
process.chdir = function (dir) {
    throw new Error('process.chdir is not supported');
};

Tudna valaki segíteni, hogy mit lehet tenni?

Köszi, üdv: Tipti
Mutasd a teljes hozzászólást!
Első körben nézz utána mi a különbség Nodejs és webalkalmazás között.
Mert ennek nincs sok köze a Node-hoz, max annyi hogy mindkettő JS.
Egy webapp meg jó hogy nem tudja használni a process-t.
Mutasd a teljes hozzászólást!

  • Az import nem kell, a process elérhető a node alatt. (Ráadásul felesleges is az import, ha nem használod utána az aliasokat.) A browser.js-t nem tudom, miért nézegeted, de böngészőben az egész process-re csak egy polyfill van, nyilván nem fog működni.
    A "/Temp" így a "C:/Temp"-re mutat, biztos azt szeretnéd? (Használj relatív útvonalat, ha lehet.) A kód amúgy jónak tűnik. Sima node console-ból megy? Lehet, hogy valami annyira régi node/process verziód van, ami még nem támogatta?

    PS C:\> node Welcome to Node.js v14.17.0. Type ".help" for more information. > process.cwd() 'C:\' > process.chdir("C:/Windows/Temp") undefined > process.cwd() 'C:\Windows\Temp' >
    Mutasd a teljes hozzászólást!
  • Szia "matt383",

    a sima node consol-ról megy :) íme:

    PS D:\S\Django_React\Menubar\menubar_gui> node
    Welcome to Node.js v14.15.0.
    Type ".help" for more information.
    > process.cwd()
    'D:\S\Django_React\Menubar\menubar_gui'
    > process.chdir("C:/Temp")
    undefined
    > process.cwd()
    'C:\Temp'

    import-tot kiszedtem
    ha futtatom, akkor még mindig a D:\S\Django_React\Menubar\menubar_gui\node_modules\process\browser.js-t keresi fel

    frissítettem a node-ot, most v14.18.0. -án vagyok
    ezzel sem változott :(

    frissítettem a react projektet: npm i react-refresh

    változás nincs, továbbra is a browser.js-t hívja, aminek a tartalma nem változott :( - tehát a chdir nem supportált.

    Köszi: Tipti
    Mutasd a teljes hozzászólást!
  • Olyan verzióját próbálod futtatni a kódnak, ami böngészőre van tervezve (valami fordítás vagy transpilation eredménye), így ott nem áll rendelkezésre a process. Pontosan hogyan indítod a scriptet?
    Mutasd a teljes hozzászólást!
  • Szia,

    React-ot használok (frontend keretrendszernek).
    Létrehoztam egy teljesen új "szűz" applikációt. Nincs benne más, csak a "lényeg":

    import logo from './logo.svg';
    import './App.css';

    function App() {

        console.log('Starting directory:' + process.cwd());
        try {
            process.chdir('C:/Temp');
            console.log('New directory:' + process.cwd());
        } catch (err) {
            console.error('chdir:' + err);
        }

        return (
            <div>
                <h1> Process </h1>
            </div>
        );
    }

    export default App;

    A node konzolon most is jól fut, de ha a böngésző konzolján figyelem, az üzenet ua. - "process.chdir is not supported" :(

    A scriptet a React által generált start-tal indítom: "react-scripts start"

    Ez a package.json tartalma:

    {
      "name": "process_gui",
      "version": "0.1.0",
      "private": true,
      "dependencies": {
        "@testing-library/jest-dom": "^5.14.1",
        "@testing-library/react": "^11.2.7",
        "@testing-library/user-event": "^12.8.3",
        "react": "^17.0.2",
        "react-dom": "^17.0.2",
        "react-scripts": "4.0.3",
        "web-vitals": "^1.1.2"
      },
      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject"
      },
      "eslintConfig": {
        "extends": [
          "react-app",
          "react-app/jest"
        ]
      },
      "browserslist": {
        "production": [
          ">0.2%",
          "not dead",
          "not op_mini all"
        ],
        "development": [
          "last 1 chrome version",
          "last 1 firefox version",
          "last 1 safari version"
        ]
      }
    }

    Üdv: Tipti
    Mutasd a teljes hozzászólást!
  • Első körben nézz utána mi a különbség Nodejs és webalkalmazás között.
    Mert ennek nincs sok köze a Node-hoz, max annyi hogy mindkettő JS.
    Egy webapp meg jó hogy nem tudja használni a process-t.
    Mutasd a teljes hozzászólást!
  • Szia Radikatkat,

    Ha így értetted, vagy ezt akartad nekem válaszolni -
    "Sajnos ezt a böngésző dönti el és nincs felette hatalmunk. A kliens oldalán nem tudhatjuk, hogy milyen könyvtárak vannak, ezért biztonsági okokból nem állítható be a file input ablak alapértelmezett könyvtára. A process.chdir() nem supportált"
    - akkor elfogadom válasznak.

    Köszi, üdv: Tipti
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd