这是我的设置:
的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="../node_modules/systemjs/dist/system.js"></script>
<script src="../node_modules/lodash/index.js"></script>
</head>
<body>
<script>
System.config({
packages: {'js': {defaultExtension: 'js'}}
});
System
.import('./js/app')
.catch(console.error.bind(console));
</script>
</body>
</html>
app.ts
import {_} from 'lodash';
export class App {};
当我尝试将TypeScript转换为JavaScript时,我收到以下错误:
error TS2307: Cannot find module 'lodash'.
使用TypeScript时,将NPM打包加载到项目中的最标准/推荐方法是什么?
备注
node_modules
并正确提供文件node_modules/lodash/index.js
。 Bower
,因为我发现应该使用NPM
代替。SystemJS
我相信它是一个通用的模块加载器。答案 0 :(得分:0)
首先,打字稿无法找到您的模块,因为您需要将打字输入文件中。其次,您需要使用--module系统标志(或tsconfig.json中的等效标志)导出您的打字稿。第三,它需要使用systemjs加载。我强烈建议您使用JSPM,我知道我知道 - 另一个包管理器,但它更像是NPM的扩展而不是其他任何东西。它允许您非常轻松地管理您的Systemjs deps。 http://jspm.io/
答案 1 :(得分:0)
我担心我不熟悉SystemJ,但据我所知的模块加载器,他们通过从加载的路径识别库,而不是模块&# 39;全球名称或任何东西。所以,通过<script>
来加载lodash实际上会帮助它知道它是否有它,或者要回馈什么对象。从基本的角度来说,您希望通过模块加载器加载它,而不是单独加载它。
但是,您可能不想写&#34; ../ node_modules / &#34;在脚本中的所有require语句;这很烦人。你可以通过SystemJs&#39;配置文档,以查看是否有创建映射的方法,以便特定模块名称将自动使其知道使用脚本的某个路径。