我试图做
我写了一个虚拟模块我组分基本上出口的单一类东西找到模块。我把它放在app/modules/。现在我绑使用进口语法从应用访问它/ app.js:不能用的WebPack,打字稿,自定义模块目录
import { Something } from 'my-component';
期望:从我目前的WebPack配置(下)我希望这个工作。
实际:此引发错误:
ERROR in [default] /<project_dir>/app/app.ts:1:26
Cannot find module 'my-component/Something'.
我试图修复它
我知道自身的模块定义正确的,因为
- 我可以导入它使用相对路径:
import { Something } from './my-component'
- 我可以按原样导入它,如果我移动该模块为
node_modules/my-component
。
唯一的组合失败是从我的模块/目录没有相对路径导入它。所以我认为这个问题可能是我的Webpack配置。
设置详细
正如你可以看到下面,我有两个目录列为resolve.root:
project_dir/app
project_dir/node_modules
似乎来管理从node_modules
解析,而不是从app
。
项目布局
Webpack
project_dir/
├── app/ context, resolve.root
│ ├── app.ts
│ └── my-component/
│ ├── index.ts
│ └── Something.ts
├── webpack.config.js
├── node_modules/ resolve.root
│ ├── ...
│ ├── ...
│ └── ...
└── dist/
└── ...
应用程序/ app.ts
import { Something } from 'my-component/Something';
应用程序/我的分量/ index.ts
export { Something } from './Something'
应用程序/我的分量/ Something.ts
class Something {
}
export { Something };
webpack.config。JS
var path = require('path'),
ROOT = path.resolve(__dirname, '.');
module.exports = {
context: path.resolve(ROOT, 'app'),
entry: 'app.ts',
output: {
path: path.resolve(ROOT, 'dist'),
filename: '[name]-[hash].js'
},
module: {
loaders: [
{ test: /\.ts$/, loader: 'awesome-typescript' }
]
},
resolve: {
root: [
path.resolve(__dirname, 'app'),
path.resolve(__dirname, 'node_modules')
],
extensions: [
'', '.ts', '.js'
]
}
};
编辑 修正了项目布局。
不相信这是相关的,所以只是一个评论:你有没有尝试从'./my-component/Something';'在app.ts中导入{Something}?相对路径必须以./开头,如果不是,则假定“node_modules”。 –