我想将Highcharts库包含在一个开源项目scala-notebook中,我不确定是否允许根据Highcharts许可证.
scala-notebook是一个web-repl(read-eval-print-loop)或web-console(类似于IPython).可以创建新的笔记本并在那里编写将在服务器端执行的代码,结果将在页面上呈现(在输出部分中).我想让用户能够在代码中定义图表数据,然后使用Highcharts库将其呈现为图表.它是在Modified BSD License(也称为New或Revised BSD)下发布的.
所以我的问题是:
我的项目是开源的,所以我可以想象,有人会下载它并将其内部部署在他/她的公司.我还想确保允许这个用例(根据许可证).
__filename和__dirname是输入代码的绝对文件路径。根据 Node.js 文档(并已确认),这 2 个特殊的全局变量是被注入的,而不是成为对象的一部分,global因此无法通过globalThis/global在笑话中进行配置。
示例函数:utils.ts
export const getFileAndDirName = () => ({
relevantFile: __filename.split('/')?.[3],
rootPath: __dirname,
})
Run Code Online (Sandbox Code Playgroud)
不起作用的示例测试代码:utils.test.ts
it('finds the file path where the function was executed', () => {
globalThis.__filename = '/Users/me/work/utils/index.ts'
expect(getFileAndDirName()).toEqual('utils')
globalThis.__filename = '/Users/me/work/tests/index.ts'
expect(getFileAndDirName()).toEqual('tests')
})
Run Code Online (Sandbox Code Playgroud)
替代方案/解决方法:
我知道我可以重构我的代码以便仍然能够测试它:
export const safelyExtractThirdElement = (filePath = '') => filePath.split('/')?.[3]
export const getFileAndDirName = () => ({
relevantFile: safelyExtractThirdElement(__filename),
rootPath: __dirname,
})
Run Code Online (Sandbox Code Playgroud)
这个解决方案使我能够避免嘲笑__filename......但是理想情况下,我不需要更改我的实际代码并保持私有内部实用程序未经测试,而且与我自己的示例相比,这也是一个简化的任意示例。
我也可以破解我的代码以使其正常工作,但我认为测试应该使代码更强大而不是更黑客:
__filename = …Run Code Online (Sandbox Code Playgroud) 我正在为 REST API 开发后端。它使用 MongoDB 作为数据库。我正在使用 mongodb v:^5.3.3。
我想根据 API 请求删除一组项目,但收到上述错误消息:
DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead
Run Code Online (Sandbox Code Playgroud)
如何完全删除集合?
node.js ×2
highcharts ×1
javascript ×1
jestjs ×1
licensing ×1
mongodb ×1
open-source ×1
typescript ×1