Trying to resolve aliases through typescript and webpack with this configuration on the webpack side:
resolve: {
alias: {
'@/': path.resolve(__dirname, './src/'),
},
},
Whenever I use import syntax of import { test } from '@/folder/file' and try to build, it throws an error
Serverless: Invoke webpack:package
Serverless: Fetch dependency graph from ....examplePath/package.json
Serverless: WARNING: Could not determine version of module @/folder
Serverless: Package lock found - Using locked versions
Serverless: Packing external modules: @/folder, source-map-support@^0.5.19
Error --------------------------------------------------
yarn install --frozen-lockfile --non-interactive failed with code 1
error An unexpected error occurred: "https://registry.yarnpkg.com/@%2fcommon: Not found".
I also have tsconfig set with these parameters:
"baseUrl": ".",
"paths": {
"~/*": ["src/*"]
}
I managed to get it to work fairly easily without problems. I am not using TypeScript however.
Anyway, my config:
// webpack.config.js
resolve: {
alias: {
'~': path.resolve(__dirname, 'src/'),
},
},
// .eslintrc.js
// need to run following command first:
// npm i eslint-import-resolver-webpack --save-dev
settings: {
'import/resolver': 'webpack',
},
Could you confirm that this works for you with '@' as well? I am using yarn and it does not work for me.
I have just tried it out, and I can confirm it works with both @ and ~.
I have no idea what your problem can be. But my advice would be that if it really matters enough you can try to debug it like the following:
// webpack.config.js
resolve: {
alias: {
'~': path.resolve(__dirname, 'src/'),
},
},
You can now add other things one by one (such as typescript support, a linter etc.)
This way you can exclude things that might cause this issue. As soon as the issue pops up after you added something, you now know where to look.
I think you are missing the extensions in webpack.resolve. I'm using typescript and aliases work fine.
Here's my config
// webpack.config.js
resolve: {
extensions: ['.ts'],
alias: {
'@app': path.resolve(__dirname, './src'),
},
},
// tsconfig.json
"baseUrl": "./src/",
"paths": {
"@app/*": ["./*"]
},
I have resolved issue with
this solution
In top of handler.ts
require('module-alias/register');
const moduleAlias = require('module-alias');
moduleAlias.addAliases({
'@': `${__dirname}/src`,
'@base': `${__dirname}/src/base`,
'@db': `${__dirname}/db`,
});
Most helpful comment
I managed to get it to work fairly easily without problems. I am not using TypeScript however.
Anyway, my config: