typescript - Byggfel: amplify kan inte hitta modulen @absolutepath
Jag är en junior frontend-utvecklare.
Jag vill fråga något om amplify.
Jag använde absolut sökväg i min apptjänst eftersom jag måste separera min tjänst från domänen. Innan var min kod som '../../../../......' för lång och jag kunde inte förstå sökvägen. Så, jag måste ändra till absolut sökväg med craco-paketet.
det fungerade absolut i min lokala miljö, men när jag använder Amplify har det ett problem som detta.
./src/App.tsx
Cannot find module: '@lms/my/directory'. Make sure this package is installed.
You can install this package by running: yarn add '@common/my/directory'
2022-04-04T09:32:11.221Z [WARNING]: error Command failed with exit code 1.
2022-04-04T09:32:11.223Z [INFO]: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
2022-04-04T09:32:11.227Z [ERROR]: !!! Build failed
2022-04-04T09:32:11.228Z [ERROR]: !!! Non-Zero Exit Code detected
2022-04-04T09:32:11.228Z [INFO]: # Starting environment caching...
2022-04-04T09:32:11.229Z [INFO]: # Uploading environment cache artifact...
2022-04-04T09:32:11.294Z [INFO]: # Environment caching completed
och jag sökte efter detta meddelande, jag hittade lösning om 'tsconfig.json', 'craco.config.js'.. men de fungerade inte.
Det är min 'tsconfig.json' och 'craco.config.js'
//tsconfig.json
{
"extends": "./tsconfig.paths.json",
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src",
"styles"
]
}
//tsconfig.paths.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@common/*": ["src/domain/common/*"],
"@lms/*": ["src/domain/lms/*"],
"@membership/*": ["src/domain/membership/*"],
"@outcomes/*": ["src/domain/outcomes-jobs/*"]
}
}
}
//craco.config.js
const CracoAlias = require('craco-alias');
module.exports = {
plugins: [
{
plugin: CracoAlias,
options: {
source: 'tsconfig',
tsConfigPath: 'tsconfig.paths.json'
}
}
]
};
och min katalogstruktur.
src
ㄴdomain
ㄴlms
ㄴcommon
ㄴmembership
ㄴoutcomes
hur kan jag använda Amplify..? åh! det är min Amplify-inställning.
version: 1
frontend:
phases:
preBuild:
commands:
- yarn install
build:
commands:
- yarn build
artifacts:
baseDirectory: build
files:
- '**/*'
cache:
paths:
- node_modules/**/*
Om jag har fel väg, snälla säg till mig. Tack!