2016-04-28 4 views
1

Я хочу включить библиотеку shelljs в угловую 2 машинописных текста. Я включил файл shelljs.d.ts в мою библиотеку node_modules/shelljs.Невозможно найти модуль «shelljs» с включением lib в угловой 2 машинописных текста

Мой package.json

"name": "myproj1", 
    "description": "myproj1: A project", 
    "typings": { 
    "shelljs": { 
     "definitions": "node_modules/shelljs/shelljs.d.ts", 
     "source": "node_modules/shelljs/global.js" 
    } 
    }, 

Мои webpack.config.js

var path = require('path'); 
module.exports = { 
    entry: './app/web/boot.ts', 
    output: { 
     path: path.resolve(__dirname, "js"), 
     filename: "bundle.js" 
    }, 
    resolve: { 
     extensions:['','.js','.ts'] 
    }, 
    module:{ 
     loaders: [{ 
      test: /\.ts/, 
      loaders: ['ts-loader'], 
      exclude: /node_modules/ 
     }] 
    }, 
    target: 'node' 
}; 

Мои package.json опции компилятора:

"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true 
    }, 

Мой файл TS:

import child = require("shelljs"); 
somefun(){ 
child.exec('node --version',(code, stdout, stderr)=>{ 
      console.log('Exit code:', code); 
      console.log('Program output:', stdout); 
      console.log('Program stderr:', stderr); 
     }); 
} 

Я получаю сообщение об ошибке «Не могу найти модуль« shelljs ». Пожалуйста, помогите мне включить библиотеку в мой проект.

+0

Не знаю, как работает 'shell.js', но попробуйте' let shell = require ('shelljs/global'); shell.exec (... ' – tchelidze

ответ

0

Используйте tsd для управления всеми вашими типами.

Из каталога проекта:

npm install tsd -g 
tsd install node --save 
tsd install shelljs --save 

Затем включите ссылку на shelljs в вашем foo.ts:

/// <reference path="typings/shelljs/shelljs.d.ts" /> 
import {exec} from "shelljs"; 

exec('node --version', code => { 
    console.log('Exit code:', code); 
}); 

На основе комментариев, вот резюме:

Использование shelljs возможно только в NodeJS окружающая среда. Это может быть либо необработанный экземпляр nodejs, либо некоторые проекты, которые содержат nodejs в себе, например Electron.

Также вы должны обратить внимание, какую систему модулей вы используете. Для NodeJS вы можете использовать CommonJS без каких-либо дополнительных комплектов. Но если вы скомпилируете свои TypeScripts для интерфейса, где NodeJS нет, то вы также должны объединить свои CommonJS с browserify. Или вы можете использовать другие типы модулей, такие как amd или SystemJS, а затем в вариантах компилятора типов введите «модуль»: например, «система». Просмотреть все возможности here

+0

tsd был обновлен до типирования, и когда я его включаю, я получаю ошибку, так как модуль всегда просматривается в папке« node_modules ». Поэтому я установил shelljs npm и поместил свой файл типирования в node_modules/shelljs. Тем не менее, я получаю ошибку как «не могу найти модуль shelljs». Node.d.ts по умолчанию имеет значение angular2 ts. – AishApp

+0

Вы не должны размещать что-либо внутри 'node_modules'. Установите типы с помощью' tsd' для 'shelljs' и включить правильный путь в ваш файл с помощью /// '. Обратите внимание, что путь относится к вашему текущему файлу '.ts'. – tenbits

+0

Без установки shelljs в node_modules, я получаю ошибку следующим образом при компиляции.c: \ Users \ user \ Desktop \ Samples \ Angular_Projects \ myProject1 \ myproj1 \ node_modules \ shelljs не существует (модуль как каталог) С установленными shelljs в node_modules, я получаю «Неиспользуемый ReferenceError: require not defined» во время выполнения время с пустым экраном, отображаемым в моем приложении – AishApp

Смежные вопросы