【问题标题】:React js - nodemon: app crashed - waiting for file changes before startingReact js - nodemon:应用程序崩溃 - 在启动前等待文件更改
【发布时间】:2020-05-21 12:35:28
【问题描述】:

我刚开始使用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

dashboard@1.0.0 dev /home/emanuele/Desktop/dashboard nodemon app.js

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

ReferenceError: 应用未定义 在对象。 (/home/emanuele/Desktop/dashboard/routes/users.js:7:1) 在 Module._compile (internal/modules/cjs/loader.js:955:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10) 在 Module.load (internal/modules/cjs/loader.js:811:32) 在 Function.Module._load (internal/modules/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 (internal/modules/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,但仍然无法弄清楚可能出了什么问题

感谢您指出正确的方向以了解错误所在。

【问题讨论】:

  • 你能显示users.js的代码吗?这就是它所说的错误所在。
  • 是的,users.js 中的问题与 index.js 相同——如果未定义 app,则不能使用它。
  • 如果这是您的确切代码,那么这应该可以工作 - 您的问题出在您未显示的其他地方。
  • 这是准确的代码。在我 rin sudo npm run dev 之后,我现在收到以下错误:Error: listen EADDRINUSE: address already in use :::5000
  • 这很奇怪,因为我刚刚关闭并重新启动Visual Studio Code

标签: javascript node.js nodemon


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您阅读这个问题。我刚刚用修改更新了代码,但仍然无法正常工作。我得到同样的错误。
  • 谢谢这是错误。但由于没有正确结束/启动已解决的服务器,我还遇到了另一个愚蠢的错误。
猜你喜欢
  • 2020-01-19
  • 2022-01-15
  • 2018-04-29
  • 2017-10-15
  • 2016-09-25
  • 2021-09-04
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多