Uruchamiam npm run start
, a serwer działa poprawnie. Gdy próbuję zobaczyć klienta w localhost
, serwer zwraca błąd: GET/500 62,700 ms - 2028 Błąd: Nie udało się odnośnika widok „błąd” w katalogu views „/ widoki”Pakiety podręczne w pakiecie ekspresowa aplikacja nie sprawdza widoku
Aplikacja działa poprawnie, gdy tylko za pomocą źródła akta. Ten błąd występuje podczas uruchamiania aplikacji z pakietu Webpack.
Jakie są różnice między plikami źródłowymi i dołączonymi, które spowodowałyby wystąpienie tego błędu?
- npm: 3.8.2
- węzeł: 4.2.6
- Ekspres 4.13.1
- WebPack: 1.12.13
- Babel ładowarki: 6.2.4
webpack.config.js
var webpack = require('webpack');
var path = require('path');
var nodeModules = {};
fs.readdirSync('node_modules')
.filter(function(x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function(mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = [
{
entry: {
'app_bundle': './server.js'
},
target: 'node',
query: {
cacheDirectory: true,
presets: ['es2015']
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
}
]
},
resolve: {
extensions: ['', '.js']
},
output: {
path: './',
filename: '[name].js'
},
externals: nodeModules
},
{
entry: [
'./src/index.jsx'
],
target: 'web',
query: {
cacheDirectory: true,
presets: ['es2015']
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel'
},
{
test: /\.css$/,
loader: 'style!css!autoprefixer'
},
{ test: /\.(woff|woff2)$/, loader: "url-loader?limit=10000&mimetype=application/font-woff" },
{ test: /\.ttf$/, loader: "file-loader" },
{ test: /\.eot$/, loader: "file-loader" },
{ test: /\.svg$/, loader: "file-loader" }
]
},
resolve: {
alias: {
'react': path.join(__dirname, 'node_modules', 'react')
},
extensions: ['', '.js', '.jsx']
},
output: {
path: __dirname + '/public',
publicPath: '/',
filename: 'webpack_bundle.js'
}
}
];
Ślad błędu mówi mi, że błąd jest obsługiwane przez procedurę obsługi błędu produkcyjnego w moim app.js
pliku:
// production error handler
app.use(function(err, req, res, next) {
console.log(err);
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
I console.log błąd z następującym wyjścia:
{ [Error: Failed to lookup view "error" in views directory "/views"]
view:
View {
defaultEngine: 'ejs',
ext: '.ejs',
name: 'error',
root: '/views',
engine: [Function],
path: undefined } }
konfiguracji widoku silnika
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
nie jestem pewien, jak rozpocząć debugowanie ...
Czy masz plik o nazwie 'error.ejs' w Folder '/ views' Twojej aplikacji? Wygląda na to, że nie można znaleźć szablonu widoku. – cjhveal
@cjhveal Dziękuję za pytanie. Tak, mam plik 'error.ejs' w folderze'/views'. –