我很难让lodash模块进口.我已经用npm+gulp设置了我的项目,并且一直在碰壁.我试过普通的lodash,但也试过lodash.

lodash npm包:(在包根文件夹中有一个index.js文件)

import * as _ from 'lodash';    

结果如下:

error TS2307: Cannot find module 'lodash'.

lodash es npm包:(在lodash.js i包根文件夹中有一个默认导出)

import * as _ from 'lodash-es/lodash';

结果如下:

error TS2307: Cannot find module 'lodash-es'.   

gulp任务和webstorm都报告了相同的问题.

有趣的是,这不会返回错误:

import 'lodash-es/lodash';

... 但当然没有"u"...

我的Tconfig.json文件:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules"
  ]
}

我的gupfile.js:

var gulp = require('gulp'),
    ts = require('gulp-typescript'),
    uglify = require('gulp-uglify'),
    sourcemaps = require('gulp-sourcemaps'),
    tsPath = 'app/**/*.ts';

gulp.task('ts', function () {
    var tscConfig = require('./tsconfig.json');
    
    gulp.src([tsPath])
        .pipe(sourcemaps.init())
        .pipe(ts(tscConfig.compilerOptions))
        .pipe(sourcemaps.write('./../js'));
});

gulp.task('watch', function() {
    gulp.watch([tsPath], ['ts']);
});

gulp.task('default', ['ts', 'watch']);

如果我理解正确的话,我的tsconfig中的module eResolution:‘node’应该将import语句指向node_module文件夹,该文件夹安装了lowash和lowash-es.我还try 了很多不同的导入方式:绝对路径、相对路径,但似乎都不起作用.有什么主意吗?

如果有必要,我可以提供一个小的zip文件来说明这个问题.

推荐答案

以下是从Typescript 2.0开始执行此操作的方法:

$ npm install --save lodash

# This is the new bit here: 
$ npm install --save-dev @types/lodash

然后,在您的.ts文件中:

以下任一项:

import * as _ from "lodash";

或(由@naitik建议):

import _ from "lodash";

我不确定有什么区别.我们使用并且更喜欢第一种语法.然而,一些人报告说第一种语法对他们不起作用,还有人 comments 说后一种语法与延迟加载的网页模块不兼容.YMMV.

2017年2月27日编辑:

根据下面的@Koert,import * as _ from "lodash";是TypeScript2.2.1、locash 4.17.4和@ypes/lowash 4.14.53版本中唯一可以使用的语法.他说,另一种建议的导入语法给出了错误"没有默认导出".

Javascript相关问答推荐

阻止iOS浏览器在传输摄像机视频时启用全屏摄像机模式

为什么我的useDispatch挂钩在这里设置不正确?

使用reaction创建可排序的表不起作用

在JavaScript中逐一播放随机生成的音频文件数组

react 页面更改类别时如何返回第0页

nPM审计始终发现0个漏洞

如何让\w token 在此RegEx中表现得不贪婪?

用相器进行向内碰撞检测

硬币兑换运行超时

我开始使用/url?q=使用Cheerio

Snowflake JavaScript存储过程返回成功,尽管预期失败

如何在输入元素中附加一个属性为checkbox?

编剧如何获得一个div内的所有链接,然后判断每个链接是否都会得到200?

S文本内容和值不必要的不同

如何在coCos2d-x中更正此错误

JS:XML insertBefore插入元素

如何发送从REST Api收到的PNG数据响应

如何将数据块添加到d3力有向图中?

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

Pevent触发material 用户界面数据网格中的自动保存