首页 > 解决方案 > 第一个 node.js 项目无法连接到 mongodb

问题描述

这是我的第一个 node.js 项目,我正处于将 node.js 与 mongoose 和 MongoDB 连接的阶段。

我刚刚从 mongodb 安装了 api,并在终端中输入了“npm run devstar”t,这是我得到的错误...

"PS C:\Users\ryant\Desktop\lets-travel> npm run devstart

let-travel@0.0.0 devstart C:\Users\ryant\Desktop\lets-travel nodemon ./bin/www

[nodemon] 2.0.4 [nodemon] 随时重启,输入rs [nodemon] 观看路径:. [nodemon] 看扩展:js,mjs,json
[nodemon] 开始node ./bin/www C:\Users\ryant\Desktop\lets-travel\bin\www:1 npm/usr/bin/env ^

ReferenceError:未定义 npm

**at Object.<anonymous> (C:\Users\ryant\Desktop\lets-travel\bin\www:1:1)**    (this is the only line that is highlighted the rest are greyed out)

at Module._compile (internal/modules/cjs/loader.js:1251:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
at Module.load (internal/modules/cjs/loader.js:1100:32)
at Function.Module._load (internal/modules/cjs/loader.js:962:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47

[nodemon] 应用程序崩溃 - 启动前等待文件更改...”

我猜这与 api 安装有关,因为我不确定 .

我知道这可能是一个愚蠢的问题,但社区是否有可能列出一些我应该看的东西?

谢谢大家的时间。

这是我的 package.json

{
  "name": "lets-travel",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "devstart": "nodemon ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongodb": "^3.6.0",
    "mongoose": "^5.10.2",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

这是我的app.js(api用户名和密码都取出来了)

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const mongoose = require('mongoose');

var indexRouter = require('./routes/index');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

//Set up mongoose connection
mongoose.connect('mongodb:/@cluster0-shard-00-00.qlpe0.mongodb.net:27017,cluster0-shard-00-01.qlpe0.mongodb.net:27017,cluster0-shard-00-02.qlpe0.mongodb.net:27017/database?ssl=true&replicaSet=atlas-syg3pr-shard-0&authSource=admin&retryWrites=true&w=majority');
mongoose.Promise = global.Promise;
mongoose.connection.on('error', (error) => console.error(error.message) );

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

我可以根据要求在评论中添加任何其他内容。

标签: node.jsmongodbmongoose

解决方案


根据错误所说,npm 没有定义,看起来你没有安装 npm/nodejs 或者你没有在 env 中设置路径。请运行npm -v终端/cmd 进行检查。

另外,只是一个快速的建议,不要将您的连接字符串粘贴到任何论坛上,也不要直接在代码中。将其保存在配置文件或环境变量中


推荐阅读