在方法调用中使用 Meteor 导入异步函数
Meteor import async function to be used in a method call
此 Meteor 应用在尝试调用保存在常量变量“vinXXX”中的导出异步函数时给出错误 TypeError: vinXXX is not a function
从已导入到方法文件夹中的同级文件夹中的方法调用中。知道为什么以及如何解决它吗?
谢谢
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
所以基本上你已经得到了 ES 模块导入语法和 commonJS 导出语法的混合。由于 Meteor 转换代码的方式,这两个可以混合使用,但是您必须了解每个的工作原理,以便您可以存储和检索数据,以便一起工作。
要使其使用混合语法,您的导入需要更改为 ES 模块默认导入语法,或者您需要将导出更改为在导出对象上具有命名 属性。
将导出更改为具有您命名的导入属性 的对象
//imports/api/vehicles/methods.js
import vinXXX from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = { vinXXX };
将导入更改为默认 ES 模块导入
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
您当然可以使用一种或另一种语法而不混合使用它们。
CommonJS 默认导出
//imports/api/vehicles/methods.js
const vinXXX = require('./vinXXX.js')
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
名为 export 的 CommonJs
//imports/api/vehicles/methods.js
const { vinXXX } = require('./vinXXX.js')
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = { vinXXX };
ES 模块默认语法
//imports/api/vehicles/methods.js
import vinXXX from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
export default async (plate, state) => {...}
ES 模块命名导出
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
export const vinXXX = async (plate, state) => {...}
您将导出设置为 vinXXX
本身,而不是包含它的对象。所以你的导入需要是默认的:
import vinXXX from './vinXXX.js'
此 Meteor 应用在尝试调用保存在常量变量“vinXXX”中的导出异步函数时给出错误 TypeError: vinXXX is not a function
从已导入到方法文件夹中的同级文件夹中的方法调用中。知道为什么以及如何解决它吗?
谢谢
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
所以基本上你已经得到了 ES 模块导入语法和 commonJS 导出语法的混合。由于 Meteor 转换代码的方式,这两个可以混合使用,但是您必须了解每个的工作原理,以便您可以存储和检索数据,以便一起工作。
要使其使用混合语法,您的导入需要更改为 ES 模块默认导入语法,或者您需要将导出更改为在导出对象上具有命名 属性。
将导出更改为具有您命名的导入属性 的对象
//imports/api/vehicles/methods.js
import vinXXX from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = { vinXXX };
将导入更改为默认 ES 模块导入
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
您当然可以使用一种或另一种语法而不混合使用它们。
CommonJS 默认导出
//imports/api/vehicles/methods.js
const vinXXX = require('./vinXXX.js')
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = vinXXX;
名为 export 的 CommonJs
//imports/api/vehicles/methods.js
const { vinXXX } = require('./vinXXX.js')
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
const vinXXX = async (plate, state) => {...}
module.exports = { vinXXX };
ES 模块默认语法
//imports/api/vehicles/methods.js
import vinXXX from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
export default async (plate, state) => {...}
ES 模块命名导出
//imports/api/vehicles/methods.js
import { vinXXX } from './vinXXX.js'
Meteor.methods({
'extractData': function (plate) {
console.log('method called: ', plate)
vinXXX(plate, 'UUU'); // CAR HISTORY
}
});
//imports/api/vehicles/vinXXX.js
export const vinXXX = async (plate, state) => {...}
您将导出设置为 vinXXX
本身,而不是包含它的对象。所以你的导入需要是默认的:
import vinXXX from './vinXXX.js'