我已经在全球范围内安装了我的打字稿和ts节点。
我有一个如下所示的package.json文件,当我运行npm test
时,一切正常(注意:正如您所见,ts-node
和{{1在这种情况下安装为本地模块)
typescript
但是,如果我从package.json中取出两个两个模块(并从我的./mode_modules中删除两个包),即{
"name": "two_sum",
"version": "1.0.0",
"description": "two sum problem solver",
"main": "main.js",
"scripts": {
"test": "./node_modules/.bin/mocha --compilers ts:ts-node/register ./test/*.spec.ts"
},
"devDependencies": {
"chai": "^4.1.2",
"mocha": "^4.1.0",
"ts-node": "^4.1.0",
"typescript": "^2.6.2"
}
}
和ts-node
未在本地安装,我得到了像这样的错误:
typescript
以下是我的问题:为什么我需要在本地安装这两个软件包?为什么全局包可以解决依赖性?
答案 0 :(得分:3)
代码运行时,全局安装的软件包不参与解析。
这是因为项目(由package.json的存在表示)不知道全局安装的内容。
全球安装的软件包与环境有关,而与项目无关。
如果在解决方案中使用了全局安装的软件包,那么项目可能在您的环境中工作,但在其他环境中不起作用。
这将使您的项目的可执行性不可靠(或换句话说,耦合或依赖于您的环境)。
现在,只为CLI工具安装全局包。