【问题标题】:Unable to require class in index file nodejs无法在索引文件 nodejs 中要求类
【发布时间】:2018-04-23 20:29:26
【问题描述】:

我的配置类:ProjectDir/classes/config.js

'use strict';
class config{
    getMongo(){
        var MongoClient = require('mongodb').MongoClient;
        MongoClient.connect('mongodb://127.0.0.1:27017/nodedb', (err, database) => {
            var db;
            if (err) return console.log(err)
            db = database;
            console.log('Connected to mongo');
        });
    }
}

module.exports = config;

我的 server.js 文件(这里定义了所有路由):ProjectDir/server.js

console.log('May Node be with you');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));

var configClass = require('./classes/config');//this is line 18
var config = new configClass();

错误:

SyntaxError: Invalid or unexpected token
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:588:28)
    at Object.Module._extensions..js (module.js:635:10)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (D:\node\server.js:18:19)
[nodemon] app crashed - waiting for file changes before starting...

没有nodemon:

    >node server.js
    May Node be with you
D:\node\classes\config.js:1
(function (exports, require, module, __filename, __dirname) { ��'
    SyntaxError: Invalid or unexpected token
        at createScript (vm.js:80:10)
        at Object.runInThisContext (vm.js:139:10)
        at Module._compile (module.js:588:28)
        at Object.Module._extensions..js (module.js:635:
        at Module.load (module.js:545:32)
        at tryModuleLoad (module.js:508:12)
        at Function.Module._load (module.js:500:3)
        at Module.require (module.js:568:17)
        at require (internal/module.js:11:18)
        at Object.<anonymous> (D:\node\server.js:18:19)

包.json

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.2",
    "ejs": "^2.5.7",
    "express": "^4.16.2",
    "mongodb": "^2.2.33",
    "node-uuid": "^1.4.8",
    "swagger-tools": "^0.10.3"
  },
  "devDependencies": {
    "nodemon": "^1.12.1"
  }
}

我是 node js 的新手,我正在尝试使我的代码模块化,所以我创建了一个名为 config.js 的类,我想在我的所有路由都写入的索引文件中使用这个类。请帮忙!!

【问题讨论】:

  • **line 18:** ??为什么这在你的代码中??
  • @wrangler 我假设他指出错误可能来自第 18 行?
  • 这个怎么样,愿 Node 与你同在 D:\node\classes\config.js:1 (function (exports, require, module, __filename, __dirname) { ��'
  • 好的,我可以看到你的 config.js 文件开头有一点空格。它是复制粘贴的结果还是您在实际文件中有它?如果您这样做,则将其删除,因此文件以'use strict'; 开头。检查所有文件。我这么说是因为这个(function (exports, require, module, __filename, __dirname) { ��' 看起来很可疑
  • 这看起来不像是空格,而是一些在使用的编码中无效的字节。尝试其他编辑器。

标签: javascript node.js express ecmascript-6 es6-modules


【解决方案1】:

改为在 server.js 中试试这个(未测试)

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));

var { config } = require('./classes/config');//this is line 18
var config = new config();

【讨论】:

  • 这太令人沮丧了......同样的问题。当我评论第 18 行时,它工作得非常好
  • 所以尝试旧时尚的方式来代替原型。我必须承认我是 es6 功能的新手
  • 是的,我在发布这个问题之前经历了这个。
猜你喜欢
  • 1970-01-01
  • 2014-06-05
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2019-02-19
  • 1970-01-01
相关资源
最近更新 更多