Jon*_*ght 5 javascript mongoose mongodb node.js express
我第一次遇到这样的错误,如果我没有注意到任何重要的因素,请原谅我。我在运行代码时遇到的完整错误是:
(node:10812) [DEP0062] DeprecationWarning: `node --inspect --debug-brk` is deprecated. Please use `node --inspect-brk` instead.
Run Code Online (Sandbox Code Playgroud)
如图所示:
它还突出显示了这行代码:
return new Script(code, options);
Run Code Online (Sandbox Code Playgroud)
如图所示:
这是我正在运行的 node.js 版本,如 nvm 所示。
C:\Users\jonat>nvm install latest
Version 8.4.0 is already installed.
Run Code Online (Sandbox Code Playgroud)
我昨天运行了 VS 安装程序,所以它是最新的。
这些是我正在使用的模块:
const express = require("express"),
mongoose = require("mongoose"),
passport = require("passport"),
bodyParser = require("body-parser"),
LocalStrategy = require("passport-local"),
passportLocalMongoose = require("passport-local-mongoose"),
math = require("mathjs");
Run Code Online (Sandbox Code Playgroud)
它们是通过 npm 安装的,我最近在.npm update
这里运行,它们显示在继承人的文件目录中:
此处更改了各种设置,并设置了将进一步使用的变量:
const app = express();
const uri = 'mongodb://localhost/MathsWebsite',
options = { useMongoClient: true };
mongoose.Promise = global.Promise;
mongoose.set('debug', true);
app.set('view engine','ejs');
app.use(bodyParser.urlencoded({extended:true}));
app.use(require("express-session")({
secret:"fanatical beaver",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(user.authenticate()));
passport.serializeUser(user.serializeUser());
passport.deserializeUser(user.deserializeUser());
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我可以使用以下方法运行代码:
C:\Users\jonat\Documents\GitHub\MathsSite\MathsWebsite>node server.js --no-deprecation
Run Code Online (Sandbox Code Playgroud)
然后导致链接错误(https://hastebin.com/lajotaqifo.rb),如图所示:
seed.js 函数位于代码底部,如下所示:
mongoose.connect(uri, options)
.then(() => seedDB)
.then(() => app.listen(process.env.PORT, process.env.IP, function () {
console.log("Server started");
}))
.catch(error => console.log("error"));
Run Code Online (Sandbox Code Playgroud)
导入如图:
const seedDB = require("./seed");
Run Code Online (Sandbox Code Playgroud)
导出如图:
async function seedDB() {...}
module.exports = seedDB;
Run Code Online (Sandbox Code Playgroud)
并且位于如图所示的文件目录中:
我认为这个错误与已弃用的问题无关,尽管我认为最好提及它。虽然我相信我可以绕过这个问题,因为我已经表明我认为从长远来看这是不可接受的,如果有人能提供这个问题的解决方案,或者甚至只是指出我正确的方向,我将不胜感激。
(为了以防万一,这里有来自server.js
(https://hastebin.com/ibuweyaxes.js)和seed.js
(https://hastebin.com/ibuweyaxes.js)在hastebin的完整代码的链接)此外我会注意到由于我对此事缺乏了解,我很可能包含无用的东西或没有包含有用的东西。
问题出在 Seed.js 文件的第 343 行,正如错误消息正确指出的那样,您不能在异步函数之外使用 wait。虽然 SeedDB 可能是一个异步函数,但 await 代码实际上位于 then catch 语句内,但必须将 then 声明为异步函数以免出错。
从 Pastebin 中截取的原始代码如下所示:
}).then(() => {
Run Code Online (Sandbox Code Playgroud)
因此,只需在then中的箭头函数之前添加 async 即可,就像我在下面所做的那样。
}).then(async () => {
Run Code Online (Sandbox Code Playgroud)
完整的 Promise 如下:
}).then(() => {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1434 次 |
最近记录: |