Jef*_*son 6 javascript import module typescript webpack
我写了一个虚拟模块my-component,它基本上导出了一个单独的Something类.我把它放在app/modules /中.现在我想用app/app.js中的导入语法来访问它:
import { Something } from 'my-component';
Run Code Online (Sandbox Code Playgroud)
期望:使用我当前的Webpack配置(下面),我希望这可以工作.
实际:这会抛出错误:
ERROR in [default] /<project_dir>/app/app.ts:1:26
Cannot find module 'my-component/Something'.
Run Code Online (Sandbox Code Playgroud)
我知道模块本身是正确定义的,因为
import { Something } from './my-component'node_modules/my-component.唯一失败的组合是导入它而没有来自我的modules /目录的相对路径.所以我认为问题可能是我的Webpack配置.
如下所示,我有两个目录列为resolve.root:
project_dir/appproject_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/
??? ...
Run Code Online (Sandbox Code Playgroud)
应用程序/ app.ts
import { Something } from 'my-component/Something';
Run Code Online (Sandbox Code Playgroud)
应用程序/我的分量/ index.ts
export { Something } from './Something'
Run Code Online (Sandbox Code Playgroud)
应用程序/我的分量/ Something.ts
class Something {
}
export { Something };
Run Code Online (Sandbox Code Playgroud)
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'
]
}
};
Run Code Online (Sandbox Code Playgroud)
编辑 修复了项目布局.
我找到了比以前接受的解决方案更简单的解决方案:
在您的打字稿配置中,在baseUrl中设置compilerOptions:
tsconfig.json:
{
"compilerOptions": {
"baseUrl": "./app",
...
},
...
}
Run Code Online (Sandbox Code Playgroud)
说明:
Webpack和Typescript默认使用节点模块解析,这很好。但是,在设置自定义模块文件夹时,您需要在Webpack和Typescript配置中对其进行配置。对Webpack模块分辨率配置的更改不会传播到Typescript编译器。
| 归档时间: |
|
| 查看次数: |
8005 次 |
| 最近记录: |