NodeJS ES6 Import Syntax Kullanma

React ve Vue.js gibi frameworklerde dosya ve modülleri projemize eklerken import keywordünü kullanıyorken Node.js’de varsayılan olarak bu işlemler için require keywordünü kullanmamız gerekiyor.

React:

1
import axios from "axios";

Node:

1
const axios = require('axios);

Node.js kullanırken import statement kullanmayı denersek şöyle bir hata alırız:

1
2
//app.js
import axios from "axios";
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
node app.js

(node:40974) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/furkan/Developer/projects/exampleImport/app.js:1
import axios from "axios";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1027:15)
    at Module._compile (node:internal/modules/cjs/loader:1063:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

Node.js v17.8.0

package.json Dosyasını Düzenleme

Nodejs ES modülleri için deneysel bir desteğe sahip ancak bunu aktif etmek için hatada da belirtildiği gibi package.json dosyamızı değiştirmemiz gerekiyor.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
//package.json
{
  "name": "exampleimport",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.27.1"
  },
  // aşağıdaki parametre ile import statement
  // kullanma özelliğini aktif edebiliriz
  "type": "module"
}

.mjs Dosya Uzantısını Kullanma

import statement kullanabilmek için kullanabileceğimiz bir diğer yol ise dosyamızı .js yerine .mjs uzantısıyla kaydetmektir.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
.
├── app.js
├── node_modules
├── package-lock.json
└── package.json

1 directory, 3 files

// dosya uzantımızı değiştirelim:
.
├── app.mjs
├── node_modules
├── package-lock.json
└── package.json

1 directory, 3 files
comments powered by Disqus
Hugo ile oluşturuldu.
Stack teması Jimmy tarafından tasarlandı