Import deno从deno.land/x导入lodash

Import deno从deno.land/x导入lodash,import,lodash,deno,Import,Lodash,Deno,我还没有找到在Deno程序中导入Lodash的正确语法/URL。 我试过这个: import\uufrom'https://deno.land/x/lodash@4.17.19/lodash.js'; 这将产生错误“uncaughtsyntaxerror:请求的模块”https://deno.land/x/lodash@4.17.19/lodash.js“未提供名为“default”的导出” 然后我试了一下: import*作为lodash from'https://deno.land/x/l

我还没有找到在Deno程序中导入Lodash的正确语法/URL。 我试过这个:

import\uufrom'https://deno.land/x/lodash@4.17.19/lodash.js';
这将产生错误“uncaughtsyntaxerror:请求的模块”https://deno.land/x/lodash@4.17.19/lodash.js“未提供名为“default”的导出”

然后我试了一下:

import*作为lodash from'https://deno.land/x/lodash@4.17.19/lodash.js';
这似乎给了我一个空的模块对象


我想看一个从Deno程序访问Lodash任何函数的示例。

因此,经过一个小实验,我找到了两种方法将
Lodash
导入
Deno
环境

1.将deno视为普通浏览器环境
导入”https://deno.land/x/lodash@4.17.19/dist/lodash.js”;
//现在``被导入到全局变量中,该变量在deno中为`self'`
常数u=(自身与任何事物一样);
console.log(u.chunk([1,2,3,2]);//-->[ [ 1, 2 ], [ 3 ] ]
2.deno中的伪节点功能 在deno std中,有一个节点模块:

该模块旨在为NodeJS标准库提供一个兼容层

从导入{createRequire}”https://deno.land/std@0.86.0/node/module.ts”;
const require=createRequire(import.meta.url);
//似乎不知道如何从web导入文件,
//因此,您必须将其下载到本地文件系统中。
const=require(“./lodash.js”);
console.log(u.chunk([1,2,3,2]);//-->[ [ 1, 2 ], [ 3 ] ]
添加类型信息 这就是我发现的,有点麻烦

  • 从下载类型信息
  • 编辑从
    xxx
    xxx.d.ts
    的每次导入。例如:在文件
    common/common.d.ts
    中:
  • //之前
    导入=必需(“../index”);
    声明模块“./索引”{
    /* ... */
    //之后
    从“./index.d.ts”导入;
    声明模块“./index.d.ts”{
    /* ... */
    
  • 现在您可以导入类型信息并使用它
  • 从“/types/Lodash/index.d.ts”导入类型Lodash;
    常量:Lodash的类型=(与任何类型一样);
    //现在uu已键入
    


    下面是
    lodash
    源文件中的一些片段,我认为与导入相关

    //检测您当前所在的环境:
    /**从Node.js检测自由变量'global'*/
    var freeGlobal=typeof global=='object'&&global&&global.object===object&&global;
    /**检测自由变量“self”*/
    var freeSelf=typeof self=='object'&&self&&self.object===object&&self;
    /**用作全局对象的引用*/
    var root=freeGlobal | | freeSelf | |函数('returnthis')();
    /**检测自由变量“导出”*/
    var freeExports=typeof exports=='object'&&exports&&&exports.nodeType&&exports;
    /**检测自由变量'module'*/
    var freeModule=freeExports&&typeof module=='object'&&module&&module&&module.nodeType&&module;
    /**检测流行的CommonJS扩展“module.exports”*/
    var moduleExports=freeModule&&freeModule.exports===freeExports;
    /**从Node.js检测自由变量'process'*/
    var freeProcess=moduleExports&&freeGlobal.process;
    // ...
    
    //以及“lodash”如何导出其功能:
    //一些AMD构建优化器,如r.js,检查以下条件模式:
    if(typeof define=='function'&&typeof define.amd=='object'&&define.amd){
    //在全局对象上公开Lodash,以防止在启用Lodash时出错
    //在AMD加载程序存在的情况下由脚本标记加载。
    //看http://requirejs.org/docs/errors.html#mismatch 更多细节。
    //使用“\.noConflict”从全局对象中删除Lodash。
    根;
    //定义为匿名模块,以便通过路径映射
    //引用为“下划线”模块。
    定义(函数(){
    返回;;
    });
    }
    //在“define”之后检查“exports”,以防生成优化器添加它。
    else if(自由模块){
    //导出Node.js。
    (freeModule.exports=uu;);
    //导出CommonJS支持。
    自由出口;
    }
    否则{
    //导出到全局对象。
    根;
    }
    // ...
    
    在es模块中使用版本。更多相同的问题请参见此处。

    import\uufrom'https://deno.land/x/lodash@4.17.15-es/lodash.js';
    console.log(41;;
    

    非常简单的解决方案:它为您完成了所有的样板文件,并且没有添加额外的代码:)与Deno一起使用更容易