Почему моего модуля нет в папке отупут?
Рассмотрим эти файлы:
mymodule.mjs
export const answer = 42
tsconfig.json
{
"compilerOptions": {
"rootDir": "src",
"outDir": "lib",
"baseUrl": ".",
"skipLibCheck": true,
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"declarationMap": true,
"inlineSources": false,
"declaration": true,
"stripInternal": true,
"lib": [
"es2016",
"dom"
],
"strict": true,
"noImplicitReturns": true,
"noUnusedLocals": true
},
"include": [
"src"
]
}
package.json:
{
"name": "deleteme2",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.15",
"@types/node": "^12.0.0",
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"typescript": "^4.1.2",
"web-vitals": "^1.0.1"
},
"scripts": {
"compile": "tsc",
"build": "yarn run compile",
"start": "node lib/server.mjs",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Он успешно компилируется с помощью:
$ yarn run build
Однако когда я пытаюсь запустить его
yarn run start
Я получаю сообщение об ошибке:
$ node lib/server.mjs
internal/modules/cjs/loader.js:892
throw err;
^
Error: Cannot find module 'C:\Users\user1\Desktop\deleteme2\lib\server.mjs'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
at Function.Module._load (internal/modules/cjs/loader.js:745:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
error Command failed with exit code 1.
Почему не
server.mjs
в выходной папке?
1 ответ
Потому что вы пытаетесь скомпилировать
.mjs
файл с расширением.
tsc
только поддерживает
.ts,.tsx
файлы, поскольку он предназначен для компиляции
TypeScript
к
JavaScript
Только. Таким образом, вы не можете использовать его для компиляции
.mjs,.js
или любые другие типы файлов.
Если вы измените свой файл на
mymodule.ts
и положи это внутрь
src/
(потому что вы включаете только
src
в вашей
tsconfig.json
), тогда он должен работать должным образом. В этом случае выходной файл будет в
.js
, поэтому вам нужно бежать
node lib/myModule.js
вместо.