nodejs terhubung tidak dapat menemukan statis


118

CATATAN: Saya telah mencoba solusi lain yang diberikan di sini tetapi tidak berhasil

Seorang pemula dengan NodeJs. Saya mencoba mengikuti AngularJS pro dan macet dengan menyiapkan server NodeJs. Menurut buku, saya menginstal nodejs dan kemudian menginstal paket connect menggunakan npm install connect

lalu unduh angularjs di folder di sebelah folder nodejs. Kemudian menulis file server.js untuk terhubung ke server. Berikut isi file tersebut:

    var connect = require('connect');
connect.createServer(connect.static("../angularjs")).listen( 5000);

Ketika saya menjalankan file server.js ini menggunakan:

node server.js

Saya mendapatkan kesalahan berikut:

 function app(req, res, next){ app.handle(req, res, next); }
 merge(app, proto);
 merge(app, EventEmitter.prototype);
 app.route = '/';
 app.stack = [];
 return app;
 has no method 'static'
   at Object.<anonymous> (C:\web\nodejs\server.js:2:36)
   at Module._compile (module.js:456:26)
   at Object.Module._extensions..js (module.js:474:10)
   at Module.load (module.js:356:32)
   at Function.Module._load (module.js:312:12)
   at Function.Module.runMain (module.js:497:10)
   at startup (node.js:119:16)
   at node.js:906:3

Ada ide guys? Terima kasih.

Jawaban:


219

Paket connect telah membuat beberapa perubahan dalam versi 3.x terbaru dari basis kode mereka, memindahkan staticmiddleware ke paketnya sendiri. Anda dapat melihat daftar paket yang telah dipindahkan ke sini .

Jadi, Anda memiliki dua opsi:

Opsi 1
Anda dapat menginstal koneksi versi 2.x yang lebih lama dan menggunakannya sebagaimana adanya:

$ npm instal connect@2.XX

Menginstal versi 2.XX terbaru akan memungkinkan implementasi Anda saat ini berfungsi dengan benar.

Opsi 2
Anda dapat terus menggunakan versi 3.x connect, dan juga menambahkan serve-static:

$ npm install serve-static

Anda juga harus memperbarui server.jsfile Anda untuk memasukkan serve-staticmodul baru :

var connect = require('connect'),
    serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("../angularjs"));
app.listen(5000);

5
bekerja untuk saya dengan menggunakan titik tunggal dalam kasus folder yang sama yaitu ./angularjs
coure2011

@ Coure2011 Ini semua tergantung pada pwdsaat Anda memulai node. Menggunakan dua titik benar saat menjalankan node server.jssaat mulai dari /angularjs(mungkin pwd Anda /angularjs/..)
Michael

Saya mencoba ini, sekarang saya mendapatkan kesalahan di browser "tidak bisa /"
Ans Bilal

@AnsBilal coba "localhost: 5000 / test.html". Dengan asumsi Anda mengikuti contoh di buku (direferensikan di OP) bahwa URL harus bekerja untuk Anda.
akvallejos

ya saya mencoba contoh dari buku (Pro AngularJs oleh Adam Freeman). Setelah sedikit mencari, saya menemukan solusi dan saya mempostingnya di blog saya untuk orang lain juga: anscoding.blogspot.com/2017/11/…
Ans Bilal

8

Jawaban dari dylants sangat membantu. Namun, berikut adalah langkah-langkah tepat yang saya ikuti untuk mengatasi kesalahan yang sama. 1. Dari jendela perintah, ubah direktori ke direktori tempat Anda menginstal nodeJS. 2. Setelah menjalankan npm install connect, jalankan:

npm install serve-static

3. Buat file bernama server.js dengan kode berikut:

var connect = require('connect'),
serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Saat masih di jendela perintah, dan masih di direktori tempat Anda menginstal nodeJS, jalankan:

    node server.js

  2. Arahkan ke URL http: // localhost: 5000 / test.html

Ini seharusnya berhasil. Berikut adalah konfigurasi direktori saya: C: \ NodeJSInstallLocation \ angularjs



1

Anda mungkin ingin mencoba sesuatu seperti ini

var express = require('express');
var app = express();
app.use(express.static('angularjs'));

0

Coba ini...

  const express = require('express');
  const app = express();
  const path = require('path');

  app.use('',express.static(path.join(__dirname, '/static/')));

Tolong tambahkan beberapa penjelasan tentang apa yang dilakukan kode
elcortegano
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.