我想提供一個文件夾app
,它與assets
文件夾處於同一級別,位於url /app
下。如何在sails.js中提供靜態文件夾?
AppController
有可能根據url提供文件,但我想知道是否可以用express來做到這一點?
app.use(express.static(__dirname + '/public'));
我想提供一個文件夾app
,它與assets
文件夾處於同一級別,位於url /app
下。如何在sails.js中提供靜態文件夾?
AppController
有可能根據url提供文件,但我想知道是否可以用express來做到這一點?
app.use(express.static(__dirname + '/public'));
關閉我的頭頂,有兩種選擇:
assets/app
到你的目的地。這些資源應該可以通過http://your.host.com/app/*
訪問,因爲這是Sails提供資產的方式。目前仍然快速帆下,你應該能夠sails.express.app
訪問,並做你的事,讓我們說,從config/bootstrap.js
:
var express = require('express');
...
sails.express.app.use(express.static(process.cwd() + '/app'));
我遇到同樣的問題。我有index.html這是SPA(主幹和require.js)...我怎麼可以在sails.js內服務? –
http://stackoverflow.com/questions/21097679/confusion-about-web-application-ports/21099224#21099224 – bredikhin
我試着在資產內創建一個新目錄,但是sails沒有提供新目錄中的文件。 –
通過添加到config/http.js中,您可以使用自定義中間件在sails中進行快速表達:
var express = require('express');
module.exports.express = {
customMiddleware: function (app) {
app.use(express.logger());
app.use(express.compress());
app.use('/app', express.static(process.cwd() + '/../client/www/'));
}
};
答案很好,但第二行缺少「var app = express();」 –
不工作在0.12 – Crusader
你可以爲你的文件,簡單的像這樣:
var express = require('../node_modules/sails/node_modules/express');
module.exports.express = {
middleware: {
custom: true
},
customMiddleware: function (app) {
app.use(express.logger());
app.use(express.compress());
app.use('/api/docs',express.static('assets/swagger-ui/dist/'));
}
};
這是我的配置/ express.js文件
我使用Sails.js v0.12.4。 http.js使用module.exports.http
而不是module.exports.express
我做了以下事情來提供另一個文件夾,如現有的/assets
文件夾。在我的例子,以服務立app
文件夾,替換/app
的'node_modules/bootstrap/dist'
路徑在config/http.js
文件我加
var express = require('express');
然後在middleware
對象我增加了快速靜態模塊。我想要提供包含在我的node_modules
文件夾中的引導資源。
bootstrapAssets: express.static('node_modules/bootstrap/dist'),
然後order
陣中,我在我想這個中間件運行的順序添加'bootstrapAssets'
。下面是完整的代碼:
var express = require('express');
module.exports.http = {
middleware: {
passportInit : require('passport').initialize(),
passportSession : require('passport').session(),
bootstrapAssets : express.static('node_modules/bootstrap/dist'),
order: [
'startRequestTimer',
'cookieParser',
'session',
'bootstrapAssets',
'passportInit',
'passportSession',
'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
],
現在在我的HTML我使用下面的可以訪問引導CSS:
<link rel="stylesheet" href="/css/bootstrap.min.css">
您可以使用此爲船帆0.12。3:
之後,修改配置/ route.js
module.exports.routes = { ... '/public/*': require('express').static('the-directory-that-contains-public-director') ... }
這將作品。但是,您必須創建一個目錄作爲公用目錄的父級,這有點難看。這是因爲通過express創建的靜態中間件會在計算到目標文件的路徑時計算'/ public /'前綴。
請看看這個StackOverflow質量保證:http://stackoverflow.com/q/41164733/1056679。 –
sails.js中沒有默認行爲的事實真的讓我對框架本身感到害怕...... –