nodejs 연결은 정적을 찾을 수 없습니다


118

참고 : 여기에 제공된 다른 솔루션을 시도했지만 작동하지 않았습니다.

NodeJ를 사용하는 초보자. AngularJS pro를 따르려고 노력하고 있으며 NodeJs 서버를 설정하는 데 어려움을 겪었습니다. 책에 따르면 nodejs를 설치 한 다음 npm install connect를 사용하여 connect 패키지를 설치했습니다.

그런 다음 nodejs 폴더 옆의 폴더에 angularjs를 다운로드했습니다. 그런 다음 server.js 파일을 작성하여 서버에 연결합니다. 다음은 파일의 내용입니다.

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

이 server.js 파일을 다음을 사용하여 실행할 때 :

node server.js

다음과 같은 오류가 발생합니다.

 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

어떤 아이디어가 있습니까? 감사.

답변:


219

연결 패키지는 코드베이스의 최신 3.x 버전에서 일부 변경을 수행하여 static미들웨어를 자체 패키지로 이동 했습니다. 여기에서 이동 된 패키지 목록을 볼 수 있습니다 .

따라서 두 가지 옵션이 있습니다.

옵션 1
이전 2.x 버전의 connect를 설치하고 그대로 사용할 수 있습니다.

$ npm install@2.XX

최신 2.XX 버전을 설치하면 현재 구현이 제대로 작동 할 수 있습니다.

옵션 2
3.x 버전의 connect를 계속 사용할 수 있으며 다음을 추가 할 수도 있습니다 serve-static.

$ npm install serve-static

또한 server.jsserve-static모듈 을 포함하도록 파일을 업데이트해야 합니다 .

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

var app = connect();

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

5
./angularjs 같은 폴더의 경우 단일 점을 사용하여 나를 위해 일했습니다
coure2011

@ coure2011 이것은 모두 pwd노드를 시작하는시기에 따라 다릅니다 . node server.js시작할 때 두 개의 점을 사용하는 것이 맞습니다 /angularjs(아마도 귀하의 비밀번호는 /angularjs/..)
Michael

나는 "/ 얻을 수 없다"지금은 브라우저에서 오류가 발생하고,이 시도
Ans By의 비랄에게

@AnsBilal은 "localhost : 5000 / test.html"을 사용해보십시오. URL이 작동해야하는 책 (OP에서 참조)의 예를 따르고 있다고 가정합니다.
akvallejos

예, 저는 책 (Adam Freeman의 Pro AngularJs)에서 예제를 시도했습니다. 비트 조명 검색 후 나는 솔루션에 와서 나는 또한 다른 사람에 대한 내 블로그에 그것을 게시 : anscoding.blogspot.com/2017/11/...
Ans By의 빌랄

8

dylants의 답변이 도움이됩니다. 그러나 동일한 오류를 해결하기 위해 수행 한 정확한 단계는 다음과 같습니다. 1. 명령 창에서 nodeJS를 설치 한 디렉토리로 디렉토리를 변경합니다. 2. 이미 npm install connect를 실행 한 후 다음을 실행합니다.

npm install serve-static

3. 다음 코드를 사용하여 server.js라는 파일을 만듭니다.

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. 명령 창에 있고 nodeJS를 설치 한 디렉토리에있는 동안 다음을 실행하십시오.

    노드 server.js

  2. URL http : // localhost : 5000 / test.html로 이동합니다.

작동합니다. 내 디렉토리 구성은 다음과 같습니다. C : \ NodeJSInstallLocation \ angularjs



1

이런 식으로 시도해 볼 수 있습니다.

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

0

이 시도...

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

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

코드가 수행하는 작업에 대한 설명을 추가하십시오
elcortegano
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.