React js-nodemon:应用程序崩溃-在启动之前等待文件更改

问题描述 投票:0回答:1

我刚开始使用nodemon并开始创建一个非常小的示例项目。但是,一旦启动服务器sudo npm run dev,就会出现以下错误:

[nodemon] app crashed - waiting for file changes before starting...

错误表明users.js:7 app.use(expressLayouts);上有错误

emanuele @ pc:〜/ Desktop / dashboard $ sudo npm run dev

[email protected] dev / home / emanuele / Desktop / dashboardnodemon app.js

[nodemon] 2.0.2 [nodemon]要随时重新启动,请输入rs [nodemon]观看目录: [nodemon]观看扩展名:js,mjs,json[nodemon]开始node app.js/home/emanuele/Desktop/dashboard/routes/users.js:7app.use(expressLayouts);^

ReferenceError:未定义应用在对象。 (/home/emanuele/Desktop/dashboard/routes/users.js:7:1)在Module._compile(内部/模块/cjs/loader.js:955:30)在Object.Module._extensions..js(内部/模块/cjs/loader.js:991:10)在Module.load(internal / modules / cjs / loader.js:811:32)在Function.Module._load(内部/模块/cjs/loader.js:723:14)在Module.require(internal / modules / cjs / loader.js:848:19)在要求时(内部/模块/cjs/helpers.js:74:18)在对象。 (/home/emanuele/Desktop/dashboard/app.js:7:19)在Module._compile(内部/模块/cjs/loader.js:955:30)在Object.Module._extensions..js(internal / modules / cjs / loader.js:991:10)[nodemon]应用崩溃了-等待文件更改,然后再开始...

所以下面是错误应在的位置:

app.js

const express = require('express');
const expressLayouts = require('express-ejs-layouts');

const app = express();

app.use(expressLayouts);
app.set('view engine', 'ejs');

// Routes
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));

const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on port ${PORT}`));

index.js

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => res.render('welcome'));

module.exports = router;

users.js

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.send('Login'));

// Register Page
router.get('/register', (req, res) => res.send('Register'));

module.exports = router;

如果需要,请低于我的package.json

{
    "name": "dashboard",
    "version": "1.0.0",
    "description": "",
    "main": "app.js",
    "scripts": {
        "start": "node app.js",
        "dev": "nodemon app.js"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "bcryptjs": "^2.4.3",
        "connect-flash": "^0.1.1",
        "ejs": "^3.0.1",
        "express": "^4.17.1",
        "express-ejs-layouts": "^2.5.0",
        "express-session": "^1.17.0",
        "mongoose": "^5.8.11",
        "passport": "^0.4.1",
        "passport-local": "^1.0.0"
    },
    "devDependencies": {
        "nodemon": "^2.0.2"
    }
}

我不明白上面的代码有什么问题。我咨询了一些帖子,例如:

1)This但无法解决问题

2)This one too但没有成功

3)我咨询了this source

4)我遇到了this too,但仍然无法弄清楚什么是错的

感谢您指出正确的方向,以了解错误可能在哪里。

javascript node.js nodemon
1个回答
1
投票

index.js(和users.js内部),没有定义app变量:

app.use(expressLayouts);
app.set('view engine', 'ejs');

这些应该在app.js中定义,而您具有此定义const app = express();。然后它们将应用于Express应用程序中的所有其他路由,因此不需要多次定义它们。

© www.soinside.com 2019 - 2024. All rights reserved.