TS2307 Build: не удается найти модуль 'lodash'


Обновить

Прошу прощения, я не очень ясно объяснил свою проблему. Ошибки, которые я получал, были не во время компиляции приложения Angular через Gulp, а в списке ошибок Visual Studio. С тех пор я смог решить эту проблему (по крайней мере, обходной путь), но я хотел бы поблагодарить всех, кто откликнулся. Мое решение ниже.

Я построил приложение Angular4 / TypeScript в PoC Asp.Net основное веб-приложение. Приложение Angular4 было отлично работает в моем приложении PoC, поэтому я скопировал все соответствующие файлы в приложение, которое я разрабатываю (также Asp.Net Core Web App).

Затем я запустил "npm install", чтобы убедиться, что все зависимости были установлены и использовал Gulp для создания .файлы js в моей папке wwwroot / js/. Gulp завершен без ошибок, но теперь Visual Studio сообщает об ошибке ниже и мешает мне построить проект.

TS2307 Build:Cannot find module 'lodash'.

Что еще более запутанно после завершения шаги выше, оригинальное приложение PoC получает ту же ошибку, несмотря на отсутствие изменений, внесенных в проект, что заставляет меня думать, что это скорее экологическая проблема.

Я прочитал аналогичную проблему , где говорится Установить @types/lodash, но это вызывает ошибки дублирования (удаление typings исправляет ошибки дублирования, но вызывает другие ошибки).

The .код ts выдает ошибку:

import * as _ from "lodash";

Изменение на:

import _ from "lodash";

Не делает работа.

Заранее благодарю вас за любую помощь, поскольку в настоящее время я рву на себе волосы, пытаясь понять, почему это больше не работает.

Мои конфигурационные файлы выглядят следующим образом:

Пакет.json

{
  "version": "1.0.0",
  "name": "aspnet",
  "private": true,
  "scripts": {
    "postinstall": "typings install",
    "typings": "typings"
  },
  "dependencies": {
    "@angular/common": "~4.0.0",
    "@angular/compiler": "~4.0.0",
    "@angular/core": "~4.0.0",
    "@angular/forms": "~4.0.0",
    "@angular/http": "~4.0.0",
    "@angular/platform-browser": "~4.0.0",
    "@angular/platform-browser-dynamic": "~4.0.0",
    "@angular/router": "~4.0.0",
    "angular-in-memory-web-api": "~0.3.0",
    "angular2-datatable": "^0.6.0",
    "bootstrap": "^3.3.7",
    "core-js": "^2.4.1",
    "lodash": "^4.17.4",
    "moment": "^2.14.1",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.1",
    "systemjs": "0.19.40",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@types/node": "7.0.7",
    "gulp": "^3.9.1",
    "gulp-clean": "^0.3.2",
    "gulp-concat": "^2.6.1",
    "gulp-less": "^3.1.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-tsc": "^1.3.1",
    "gulp-typescript": "^3.1.6",
    "gulp-uglify": "^2.0.0",
    "path": "^0.12.7",
    "typescript": "^2.1.0",
    "typings": "^2.1.0"
  }
}

Машинопись.json

    {
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

Tsconfig.json

    {
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "module": "commonjs",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../wwwroot/app/",
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "moduleResolution": "node",
    "typeRoots": [
      "./node_modules/@types",
      "./node_modules"
    ],
    "types": [
      "node"
    ]
  },
  "exclude": [
    "node_modules"
  ]
}
2 3

2 ответа:

Вы должны установить @types/lodash пакет через:

npm install --save @types/lodash

Это покажет компилятору Typescript, что такое lodash и какие модули и компоненты предоставляются библиотекой.

Кроме того, typings больше не является рекомендуемым подходом. Вы должны удалить и удалить typings, а также переключиться на пакеты @types, обновив tsconfig до:

"typeRoots": [
  "node_modules/@types"
],

Наконец, как только вы удалили шрифты, вам нужно будет добавить пакеты @types для core-js и jasmine чтобы включить эти пакеты:

npm install --save @types/core-js
npm install --save @types/jasmine

Еще раз спасибо всем, кто откликнулся, и я приношу извинения за то, что изначально не был более ясен с фактическим вопросом.

Мои файлы TypeScript компилировались правильно, но Visual Studio продолжала сообщать об ошибках сборки в окне "список ошибок".

Попробовав несколько шагов (те, что перечислены выше, еще много), то, что исправило проблему для меня, было найдено здесь: http://rostacik.net/2015/08/14/how-to-disable-building-of-typescript-files-in-visual-studio-2015/

Короче говоря, откройте свой проект".файл xproj" (может быть ".csproj") с помощью текстового редактора. Найдите теги <PropertyGroup> </PropertyGroup> и добавьте строку <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>. Сохраните файл, а затем разрешите Visual Studio обновлять файлы по мере необходимости. Теперь заново создайте свое приложение.