javascript - Get 无法在 Node.js 中的模块外部使用 import 语句

标签 javascript node.js

我对 node.js 很陌生,正在使用 node v13.6.0 遵循教程。 我想将 is-empty' 导入到此文件中:

const Validator = require('validator');

import isEmpty from './is-empty';

module.exports = function validateRegisterInput(data) {
    
    let errors = {};

    if(Validator.isLength(data.name), {min:2, max: 30}) {
        errors.name = 'name is too short or too long';
        }
    return {
        errors, 
        isValid: isEmpty(errors)
    }
}

但我收到此错误:

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1060:16)
    at Module._compile (internal/modules/cjs/loader.js:1108:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1164:10)
    at Module.load (internal/modules/cjs/loader.js:993:32)
    at Function.Module._load (internal/modules/cjs/loader.js:892:14)
    at Module.require (internal/modules/cjs/loader.js:1033:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/home/me/myapp/routes/api/users.js:12:31)
    at Module._compile (internal/modules/cjs/loader.js:1144:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1164:10)
    at Module.load (internal/modules/cjs/loader.js:993:32)
    at Function.Module._load (internal/modules/cjs/loader.js:892:14)
    at Module.require (internal/modules/cjs/loader.js:1033:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/home/me/myapp/server.js:7:15)
    at Module._compile (internal/modules/cjs/loader.js:1144:30)

is-empty定义如下:

const isEmpty = value =>
    value === undefined ||
    value === null ||
    (typeof value === 'object' && Object.keys(value).length === 0) ||
    (typeof value === 'string' && value.trim().length === 0);

    module.exports = isEmpty

我想知道如何解决这个问题?

最佳答案

您应该使用 require 而不是 import,如 https://nodejs.org/api/esm.html#esm_package_json_type_field 中所述

const Validator = require('validator');

const isEmpty = require('./is-empty');

module.exports = function validateRegisterInput(data) {
    
    let errors = {};

    if(Validator.isLength(data.name), {min:2, max: 30}) {
        errors.name = 'name is too short or too long';
        }
    return {
        errors, 
        isValid: isEmpty(errors)
    }
}
``

关于javascript - Get 无法在 Node.js 中的模块外部使用 import 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63516144/

相关文章:

javascript - 将node.js服务器的数据显示到html页面

node.js - Slack API-chat.update : "message_not_found"

sql-server - 在 SQL Server 2012 中使用 Node.js 进行身份验证

javascript - MongoDB Mongoose 聚合/数学运算

javascript - 将 js 文件从 Meteor 应用程序提供到其他服务器

node.js - 使用 Promise 返回 lambda 处理函数

node.js - Sequelize 不创建表,但服务器运行没有错误

javascript - 如何让PhoneGap、jQuery Mobile中的UI变得良好?

Javascript 显示 div 函数

javascript - 为什么 setCustomValidity() 在 React 应用程序中不起作用?