首先,经过数小时的谷歌搜索后,我没有看到明确的答案,对不起,如果我忽略了什么。
快速版
使用Typescript,如何将node_modules
移至outDir
或我是否采取了错误的方式?
长版
我试图开始使用打字稿,配置项目似乎是最困难的部分。我的目标是将源代码放在src/server
中,输出放在bin/server
这是我的tsconfig.json供参考:
{
"compilerOptions": {
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitAny": false,
"outDir": "../../bin",
"sourceMap": true,
"suppressImplicitAnyIndexErrors": true,
"target": "ES2015",
"typeRoots": [
"../../node_modules/@types/"
]
},
"exclude": [
"bin/*",
"node_modules/*",
"public/*",
"**/*-aot.ts"
]
}
这是目录结构:
Project
+-/bin
| +/server
| +-server.js
+-/src
+/server
+-server.ts
+-package.json
+-/node_modules
+-[...]
+-/typings
+-[...]
要从~/Project
进行编译,我使用tsc -p src/server
,我们拥有bin/server/server.js
。
要运行我正在使用vs代码,这里是launch.json
:
{
"version": "0.2.0",
"configurations": [{
"outFiles": [ "${workspaceRoot}/bin/server/**/*.js" ],
"cwd": "${workspaceRoot}/bin/server",
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/src/server/server.ts",
"sourceMaps": true,
"env": {
"NODE_ENV": "development",
"SERVER": "http://localhost:8080"
}
}]
}
我得到的错误是Error: Cannot find module 'express'
,该模块已安装在src/server/node_modules/express
中,因此我猜测我必须将node_modules
移至bin/server
?这看起来不对。
打字稿的超级新手(今天开始)感谢花时间阅读我的长篇文章。
PS:假设一切都是最新版本。
答案 0 :(得分:1)
找到答案!
我将tsconfig.json移至(?P<foo>...)
并从项目根目录运行src/server/
。
更新了tsconfig.json以供参考:
tsc -p src/server