【问题标题】:Cannot import module file in node js无法在节点js中导入模块文件
【发布时间】:2019-03-05 07:52:52
【问题描述】:

我已经编写了通用模块。

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

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

提前致谢。

【问题讨论】:

  • 尝试 - 从“../validations/fundraiser”导入 { Validations};另外请检查你的 nodeJs 版本是否支持 es6 语法
  • 感谢您的回复。我已经试过了。不工作的兄弟。 NodeJs 版本为 v10.12.0

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


【解决方案1】:

导入仍然是 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】:

    您将commonjs 模块与ES6 模块混为一谈。您可以阅读有关基础知识的更多信息here。你能做的就是改变:

    export { Validations };
    

    module.exports = Validations;
    

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

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

    如果你想使用更新的语法,那么

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

    【讨论】:

      【解决方案3】:

      试试这个:

      const  Validations = [...];
      
      ...
      
      export default Validations;
      

      然后:

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

      【讨论】:

        【解决方案4】:

        你应该尝试像这个伙伴一样导入

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

        要做到这一点,你的节点应该支持 ES6 及更高版本..欢呼队友

        【讨论】:

        • 感谢您的回复。我已经尝试过了,但没有工作。 Nodejs 版本为 v10.12.0
        【解决方案5】:

        喜欢@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()
        

        【讨论】:

          猜你喜欢
          • 2020-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-24
          • 2019-01-26
          • 2020-12-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多