无法在节点js中导入模块文件

时间:2019-03-05 07:52:53

标签: node.js express sequelize.js express-validator

我已经编写了通用模块。

const { check, body } = require('express-validator/check');
var models = require("../models");

let Validations = [
    check('email').isEmail().withMessage("Invalid Email"),
    check('phone').isLength({ min: 5 }).withMessage("Min length Required"),
    check('name').not().isEmpty().withMessage("Value is Required"),
    body("name").custom(value => {
        return models.fundraisers.findByName(value).then(user => {
        if (user) {
            return Promise.reject('E-mail already in use');
        }
        })
    })
]

export { Validations };

我正尝试如下访问。

import Validations from "../validations/fundraiser";

但是我收到以下错误。

import Validations from "../validations/fundraiser";
       ^^^^^^^^^^^

SyntaxError: Unexpected identifierI

我找不到问题所在。请帮助任何人解决此问题。

谢谢。

5 个答案:

答案 0 :(得分:0)

您应该尝试像这样的伴侣导入

从“ ../validations/fundraiser”导入{Validation};

并且为此,您的节点应支持ES6及更高版本。

答案 1 :(得分:0)

导入仍然是node.js中的实验性功能。

要使用它们,您应该使用--experimental-modules运行节点,并使用*.mjs扩展名

node --experimental-modules test.mjs

test.mjs:

import a from './test2'
a();

test2.mjs:

const a = () => console.log(22)
export default a;

答案 2 :(得分:0)

您正在将commonjs个模块与ES6个模块混合使用。您可以阅读有关基础知识here的更多信息。您可以做的就是改变:

export { Validations };

module.exports = Validations;

然后在导入时使用以下语法:

const Validations = require('../validations/fundraiser');

如果要使用较新的语法,则

  1. 保持一致,并使用import / export
  2. 使用babel之类的编译器将代码转换为commonjs语法,以便您也可以在节点和较旧的浏览器中使用它。

答案 3 :(得分:0)

尝试一下:

const  Validations = [...];

...

export default Validations;

然后:

import Validations from '../validations/fundraiser';

答案 4 :(得分:0)

喜欢@axm_答案:

这里有个例子:

文件:functions.js

 const API = {

}

API.sayHello = () => {
  return console.log('Hello')
}

API.sayGoodbye = () => {
  return console.log('good bye!')
}

API.doSomeThing = () => {
  return console.log('let do some thing!')
}

module.exports = API

文件index.js

const API = require('./functions')

API.sayHello()
API.doSomeThing()
API.sayGoodbye()