我对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我在想我怎么解决这个问题呢?
发布于 2020-08-21 03:52:31
您应该使用require,而不是像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)
}
}
``发布于 2021-06-30 00:35:03
他们想说的是你不能把两者混为一谈。因为Node已经将您的javascript作为require模块来处理,所以您可以使用导入,但是当您引入需求时,整个过程就结束了。
我刚刚经历了一个旧的量角器项目,它使用的是需求。要么全是要么什么都不是,一个或另一个。
https://nodejs.org/api/esm.html#esm_interoperability_with_commonjs
不支持使用require加载ES模块的
,因为ES模块具有异步执行。相反,使用import()从CommonJS模块加载ES模块。
https://nodejs.org/api/esm.html#esm_differences_between_es_modules_and_commonjs
不需要、出口或module.exports
在大多数情况下,ES模块导入可用于加载CommonJS模块。
如果需要,可以使用module.createRequire().在ES模块中构造一个require函数。
https://stackoverflow.com/questions/63516144
复制相似问题