我有一个使用TypeScript在AngularJS中编写的混合应用程序,我最近转换为混合应用程序,以便Angular也可以在项目中使用。我正在使用SystemJS进行模块加载。
转换后,我在VS2015中收到与Lodash相关的错误
'Cannot find name '_'
我已经查看了以下SO问题,但是没有一个建议的解决方案有效或看起来令人满意:
Importing lodash into angular2 + typescript application
Angular2 and lodash...Cannot find name
我尝试了上面第一个问题的主要建议,即:
删除节点模块文件夹,然后:
$ npm install --save lodash
$ npm install --save @types/lodash
Then, in my .ts file, I add this:
import * as _ from "lodash";
但是这给了我错误'找不到模块'lodash'。
如果我使用以下内容,我不会收到该错误,但我仍然收到错误'找不到姓名'_':
import "lodash";
我的问题是 - 有没有一种方法可以在我的代码中单独指定'_'来解决这个问题? (我真的喜欢完全理解使用import * as _ from“lodash”的问题,即模块加载和赋值'_'的细节是什么?
这是我收到错误的* .ts文件:
import "lodash";
(function () {
var controller = function ( dependency1, dependency2) {
this.myFunction = (myParam) => {
this.MyService.getMyModel(myParam).then((model) => {
this.model = model.Content;
// can I assign _ so that it works here - if so where and how?
_.each(this.model.MyEntities, function (m) { return m.showDetails = false; });
....
我的相关tsconfig.json编译器选项是:
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"lib": [ "es2015", "dom" ]
....
当我查看C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript时,我只有1.8。当我咕噜咕噜的项目(使用https://www.npmjs.com/package/grunt-ts)时,它告诉我它正在使用tsc v2.6.2编译,我不明白。我认为VS2015必须使用tsc 1.8(我只有一个tsconfig.json,并且.csproj上没有Typescript配置)。
答案 0 :(得分:1)
对于visual studio在typescript 1.8上的问题,你需要为visual studio下载一个新版本的typescript插件。
您可以在typescript website download page
上找到visual studio 2015和2017的详细信息关于lodash问题,我听到了同样的问题。我的理由是,洛达什的进口方式存在不一致之处。当所有代码更改为引用lodash时,如下所示都可以:
import * as _ from "lodash";
我的案例中的所有代码都包括删除引用loadash的第三方组件。我做了调试并找出了实际的原因,但是现在我不记得除了有效的解决方案之外的其他细节。