有没有办法检查所有函数引用是否都是在JavaScript/节点应用程序中定义的?
我最近提取了一个名为有没有办法检查所有函数引用是否都是在JavaScript/节点应用程序中定义的?,javascript,node.js,eslint,Javascript,Node.js,Eslint,我最近提取了一个名为sendTextMessage的函数,但没有将其修改到自己的模块中,这样我就可以在不同的位置重复使用它。我想知道前面的位置是否正确地引用了模块内的函数,但除了模拟一些系统函数和编写单元测试之外,找不到其他简单的方法 在编译语言中,“此函数定义是否正确”的问题会很快得到回答,但在JavaScript/Node中,我假设您需要: 运行代码-工作量太大;我需要为调用这个特定路径设置一个完美的条件 编写单元测试-是的,但我现在没有单元测试;有没有更简单的方法来实现我的目标 等待指标-
sendTextMessage
的函数,但没有将其修改到自己的模块中,这样我就可以在不同的位置重复使用它。我想知道前面的位置是否正确地引用了模块内的函数,但除了模拟一些系统函数和编写单元测试之外,找不到其他简单的方法
在编译语言中,“此函数定义是否正确”的问题会很快得到回答,但在JavaScript/Node中,我假设您需要:
rementers.js
提取了sendTextMessage
到twilio.js
,并希望确保在rementers.js
中正确定义该函数
定义模块(twilio.js):
const accountSid = '...';
const authToken = '...';
const twilio = require('twilio')(accountSid, authToken, {
// US West Coast
edge: 'umatilla',
});
async function sendTextMessage(message, recipientNumber) {
return twilio.messages.create({
from: '+...',
body: message,
to: recipientNumber,
});
}
module.exports = {
twilio,
sendTextMessage, // Recently exported function!
};
const {
sendTextMessage,
} = require('./deps/twilio');
...
// Question: was sendTextMessage correctly extracted out to twilio.js and does my code actually reference it here correctly?
await sendTextMessage(reminderMessage, participantPhoneNumber);
...
消费模块(rementers.js):
const accountSid = '...';
const authToken = '...';
const twilio = require('twilio')(accountSid, authToken, {
// US West Coast
edge: 'umatilla',
});
async function sendTextMessage(message, recipientNumber) {
return twilio.messages.create({
from: '+...',
body: message,
to: recipientNumber,
});
}
module.exports = {
twilio,
sendTextMessage, // Recently exported function!
};
const {
sendTextMessage,
} = require('./deps/twilio');
...
// Question: was sendTextMessage correctly extracted out to twilio.js and does my code actually reference it here correctly?
await sendTextMessage(reminderMessage, participantPhoneNumber);
...
首先,为typescript提供一个快速插件;您提到“编译语言不会受到此问题的影响”,而javascript会。但是,如果代码是一个typescript项目,它将以您想要的方式进行检查。在下一个项目中记住这一点。或者您可以对当前项目应用typescript检查 这里有一些答案 一-编写单元测试。如果你不能,那么,这对代码库来说是个坏兆头。尽管如此,还是要为自己编写测试。你必须学会如何模仿,反过来你也将学会如何编写更容易测试的代码 第二,熟悉javascript语法。在某些情况下,您需要能够排除此类错误的可能性。除非您的代码库覆盖了
require
,否则这种行为是可以预测的
我认为eslint不能静态分析模块,尤其是在使用require
时。比我聪明的人也许能解释原因;我不能
第三,也是最重要的一点——在代码和prod之间是否没有中间地带?没有本地开发或登台环境?那么,如果不按prod,就无法运行应用程序?在这种情况下,继续冒险破坏prod;上级有人在做错误的决定,需要学习