nodejs kết nối không thể tìm thấy tĩnh


118

LƯU Ý: Tôi đã thử giải pháp khác được đưa ra ở đây nhưng nó không hoạt động

Một người mới với NodeJs. Tôi đang cố gắng theo dõi AngularJS pro và gặp khó khăn với việc thiết lập máy chủ NodeJs. Theo cuốn sách, tôi đã cài đặt nodejs và sau đó cài đặt gói kết nối bằng cách sử dụng npm install connect

sau đó tải xuống anglejs trong thư mục bên cạnh thư mục nodejs. Sau đó viết tệp server.js để kết nối với máy chủ. Đây là nội dung của tệp:

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

Khi tôi chạy tệp server.js này bằng:

node server.js

Tôi gặp lỗi sau:

 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

Bất kỳ ý tưởng guys? Cảm ơn.

Câu trả lời:


219

Gói kết nối đã thực hiện một số thay đổi trong phiên bản 3.x mới nhất của cơ sở mã của họ, chuyển staticphần mềm trung gian sang gói riêng của nó. Bạn có thể xem danh sách các gói đã được chuyển đến đây .

Vì vậy, bạn có hai lựa chọn:

Tùy chọn 1
Bạn có thể cài đặt phiên bản kết nối 2.x cũ hơn và sử dụng như sau:

$ npm cài đặt connect@2.XX

Cài đặt phiên bản 2.XX mới nhất sẽ cho phép triển khai hiện tại của bạn hoạt động bình thường.

Tùy chọn 2
Bạn có thể tiếp tục sử dụng phiên bản 3.x của kết nối và cũng có thể thêm serve-static:

$ npm cài đặt serve-static

Bạn cũng sẽ phải cập nhật server.jstệp của mình để bao gồm serve-staticmô-đun mới :

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

var app = connect();

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

5
làm việc cho tôi bằng cách sử dụng dấu chấm duy nhất trong trường hợp cùng một thư mục ví dụ ./angularjs
coure2011

@ coure2011 Tất cả điều này phụ thuộc vào pwdthời điểm bạn bắt đầu nút. Sử dụng hai chấm là đúng khi chạy node server.jskhi khởi động từ /angularjs(có lẽ pwd của bạn là /angularjs/..)
Michael

Tôi cố gắng này, bây giờ tôi đang nhận được lỗi trong trình duyệt "không thể có được /"
Ans Bilal

@AnsBilal hãy thử "localhost: 5000 / test.html". Giả sử bạn đang làm theo ví dụ trong sách (được tham chiếu trong OP) thì URL đó sẽ phù hợp với bạn.
akvallejos

vâng, tôi đang thử một ví dụ từ cuốn sách (Pro AngularJs của Adam Freeman). Sau khi thắp chút tìm tôi đến giải pháp và tôi đã post đó trên blog của tôi cho người khác cũng: anscoding.blogspot.com/2017/11/...
Ans Bilal

8

Câu trả lời của thuốc nhuộm là hữu ích. Tuy nhiên, đây là các bước chính xác mà tôi đã làm theo để giải quyết lỗi tương tự. 1. Từ cửa sổ lệnh, thay đổi thư mục thành thư mục mà bạn đã cài đặt nodeJS. 2. Sau khi đã chạy npm install connect, hãy chạy:

npm install serve-static

3. Tạo một tệp có tên server.js với mã sau:

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Khi vẫn ở trong cửa sổ lệnh và vẫn ở trong thư mục mà bạn đã cài đặt nodeJS, hãy chạy:

    node server.js

  2. Điều hướng đến URL http: // localhost: 5000 / test.html

Điều này sẽ hoạt động. Đây là cấu hình thư mục của tôi: C: \ NodeJSInstallLocation \ anglejs


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

connect().use(
    serveStatic("angularjs")
).listen(5000);

4
Chào mừng đến với SO. Vui lòng đọc trên stackoverflow.com/help/how-to-answer . Câu trả lời của bạn không thực sự cung cấp thêm bất kỳ thông tin chi tiết nào cho câu trả lời được chấp nhận.
Jaques

1

Bạn có thể muốn thử một cái gì đó như thế này

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

0

Thử cái này...

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

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

Vui lòng thêm một số giải thích về những gì mã đang hoạt động
elcortegano
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.