簡體   English   中英

如何在Node.js,ExpressJS中使用外部JS文件

[英]How to use an external js-File in Nodejs, ExpressJS

我今天開始使用NodeJS,ExpressJS,Android創建一個小的Web應用程序。 而且我遇到了一個問題,它整天困擾着我!

ENV:

服務器: NodeJSExpressJS

客戶端: HTMLAngularCSS

我嘗試從node_modules文件夾加載CSS和JavaScript文件。 但這是行不通的。 它僅適用於在線資源

作品

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
  <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
  <script type="text/javascript" src="../public/javascript/test.js"></script>

不起作用

<script type="text/javascript" src="../public/javascript/test.js"></script>

服務器一直在寫404錯誤

在此處輸入圖片說明

我已經嘗試過絕對和相對路徑。 我也嘗試過其他stackoverflow帖子中的服務器建議。 沒有結果。

Servercode是由Eclipse IDE使用“ Express JS Project”創建的

app.js

    var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')

    ,pageX = require('./routes/pageX');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/pageX', function(req,res){
    console.log("TEST - PageX");
    res.send(pageX.pageX(req, res));
});
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

邁克爾

根據docs ,使用時:

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

Express查找相對於靜態目錄的文件,因此靜態目錄的名稱不是URL的一部分。

因此,要加載您的test.js您應該使用:

<script type="text/javascript" src="/javascript/test.js"></script>

同樣,這意味着您應該在__dirname下有一個public目錄。

如果我正確理解了您,並且按照您到目前為止說過的話,您正在從node_modules內部運行node ,並且具有以下目錄結構:

app-root-directory/
    public/
    node_modules/

我對node也很node_modules ,我相信您不應該從node_modules內部node_modules 但是,如果你再path.join(__dirname, 'public')是不是你想要的,因為它會指向public里面node_modules

因此,您還必須將express.static的根目錄更改為../public

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

嘗試使用這個。 在我的工作。

var express = require('express');
var app = express();
app.use('/js', express.static(__dirname + '/public/js'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM