Daftar isi
Error Cannot find module adalah salah satu error Node.js yang paling sering muncul. Artinya sederhana: Node.js mencoba membuka file atau package yang kamu tulis di require() atau import, tapi tidak menemukannya.
Kabar baiknya, kalau project-mu baru kamu tulis atau kamu ubah, penyebabnya hampir selalu ada di kode: salah ketik, salah path, atau salah cara import. Artikel ini membahas penyebab-penyebab itu, urut dari yang paling sering.
Kalau error muncul di script yang sebelumnya jalan normal, atau tepat setelah kamu mengganti script dengan versi baru, kemungkinan masalahnya ada di versi Node.js. Lihat Cara Mengatasi Error Node.js di Pterodactyl.
Langkah 0: Baca pesan errornya dulu
Buka tab Console dan baca log error-nya. Ada dua bentuk pesan yang berbeda artinya:
Error: Cannot find module './utils/helper'
Require stack:
- /home/container/src/index.jsError: Cannot find module 'discord.js'- Kalau namanya diawali
./,../, atau/, berarti Node.js mencari file milikmu sendiri. Lanjut ke Cara 1 sampai 5. - Kalau namanya polos seperti
discord.jsatauexpress, berarti yang dicari adalah package. Lanjut ke Cara 6. - Baris Require stack menunjukkan file mana yang melakukan import. Mulai periksa dari file paling atas di daftar itu.
Cara 1: Periksa typo dan huruf besar-kecil
Server Pterodactyl berjalan di Linux, dan Linux membedakan huruf besar dan kecil. Di komputer Windows Helper.js dan helper.js dianggap sama, tapi di server keduanya adalah file berbeda.
// File aslinya bernama Helper.js, tapi kamu menulis:
const helper = require("./helper") // error di server, jalan di WindowsYang perlu dicek:
- Huruf besar-kecil nama file dan folder harus sama persis dengan yang ada di File Manager.
- Tidak ada salah ketik, misalnya
ultilspadahal foldernyautils. - Tidak ada spasi atau karakter aneh di nama file.
Cara 2: Perbaiki path relatif
Path relatif dihitung dari lokasi file yang melakukan import, bukan dari folder utama project.
project/
├─ index.js
└─ src/
├─ commands/
│ └─ ping.js
└─ utils/
└─ helper.jsKalau ping.js ingin memakai helper.js:
// Di src/commands/ping.js
require("./utils/helper") // salah: mencari src/commands/utils/helper
require("../utils/helper") // benar: naik satu folder duluTips: hitung berapa folder yang harus naik. ./ berarti folder yang sama, ../ naik satu level, ../../ naik dua level.
Cara 3: Tambahkan ekstensi file kalau memakai ESM
Kalau project-mu memakai import ... from dan package.json berisi "type": "module", Node.js mewajibkan ekstensi file pada import relatif. Error-nya sedikit berbeda:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/container/src/utils/helper' imported from /home/container/src/index.jsimport { halo } from "./utils/helper" // error
import { halo } from "./utils/helper.js" // benarUntuk import folder, tulis file index-nya secara lengkap:
import config from "./config/index.js"Kalau memakai require() (CommonJS), ekstensi .js boleh dihilangkan.
Cara 4: Pastikan file benar-benar ada di server
Kadang kodenya benar, tapi filenya memang tidak ada di server. Penyebab yang sering:
- File belum ikut ter-upload, atau terupload ke folder yang salah.
- File kamu ganti nama atau pindahkan, tapi baris import-nya belum diubah.
- Memakai TypeScript, tapi hasil build (misalnya folder
dist) belum dibuat atau belum diupload, sementara startup command menjalankan file didist. - Menyalin project dari Git, tapi ada file yang masuk
.gitignoresehingga tidak ikut.
Buka File Manager, telusuri folder satu per satu, dan pastikan file yang dicari ada di lokasi yang sama dengan yang tertulis di error.
Panduan upload: Upload File, File Manager, dan SFTP.
Cara 5: Cocokkan export dan import
Setelah file ketemu, bisa jadi isinya yang tidak diekspor dengan benar. Gejalanya tidak selalu "Cannot find module", tapi masih sekeluarga:
CommonJS
// helper.js
function halo() { return "halo" }
module.exports = { halo } // jangan lupa baris ini
// index.js
const { halo } = require("./helper")Kalau lupa module.exports, hasil require jadi objek kosong dan muncul error seperti halo is not a function.
ESM
// helper.js
export function halo() { return "halo" }
// index.js
import { halo } from "./helper.js"Kalau nama yang kamu import tidak diekspor, akan muncul error seperti ini:
SyntaxError: The requested module './helper.js' does not provide an export named 'halo'Periksa ejaan nama export dan import. Perhatikan juga perbedaan export default (diimport tanpa kurung kurawal) dan named export (diimport dengan kurung kurawal).
Cara 6: Daftarkan package yang belum terpasang
Kalau yang hilang adalah package seperti discord.js, express, atau mysql2, artinya package itu belum terinstal. Biasanya karena belum ada di package.json.
- Buka
package.jsondan lihat bagiandependencies. Package yang kamu import harus ada di sana. - Kalau belum ada, tambahkan lewat Console:
npm install nama-package- Pastikan
package.jsonada di folder utama (satu level dengan file startup), bukan di dalam subfolder. - Restart server.
Kalau package sudah ada di package.json tapi tetap tidak ketemu, atau instalasinya gagal, coba hapus folder node_modules, lalu start ulang agar terinstal bersih. Kalau gagal terus, lanjut ke Cara Mengatasi Error Node.js di Pterodactyl.
Cara 7: Samakan sistem modul (require vs import)
Ada dua gaya penulisan modul di Node.js, dan keduanya tidak boleh dicampur sembarangan dalam satu file.
| Pesan error | Penyebab | Solusi |
|---|---|---|
Cannot use import statement outside a module | Kode memakai import, tapi project masih CommonJS | Tambahkan "type": "module" di package.json, atau ganti import jadi require |
require is not defined in ES module scope | Kode memakai require, tapi package.json berisi "type": "module" | Ganti require jadi import, atau hapus "type": "module" |
Pilih satu gaya dan konsisten di seluruh project.
Ringkasan cepat
| Gejala | Cek ini dulu |
|---|---|
Path diawali ./ atau ../ | Typo, huruf besar-kecil, path relatif, ekstensi .js |
Nama polos seperti express | Package belum ada di package.json |
ERR_MODULE_NOT_FOUND | Lupa ekstensi .js di import relatif (ESM) |
does not provide an export named | Nama export dan import tidak cocok |
Cannot use import statement / require is not defined | Sistem modul tidak konsisten |
| Error muncul di script yang biasanya jalan | Versi Node.js di Docker Image |
Masih error juga?
Kumpulkan informasi ini sebelum menghubungi kami: teks error lengkap dari Console (termasuk Require stack), isi package.json, dan struktur folder dari File Manager. Dengan itu penyebabnya biasanya cepat ketemu.
Apakah artikel ini membantu?