видимости функций.
Грубо говорят, пишу:
export const func1 = (): void => { console.log("kek") }; - и в скомпилированном файле я не могу вызвать func1().
Если компилю через tsc, то норм всё вызывается.
Как решить проблему?
webpack.config.ts
import * as path from "path";
import * as webpack from "webpack";
const config: webpack.Configuration = {
entry: "./src/main.ts",
devtool: "inline-source-map",
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".js"],
},
output: {
filename: "incomesandexpensesrate.js",
path: path.resolve(__dirname, "dist"),
},
};
export default config;
tsconfig.json
{
"compilerOptions": {
"target": "ES5",
"esModuleInterop": true,
"module": "commonJs",
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"removeComments": true,
"sourceMap": true,
"outDir": "./dist",
"types": ["node"]
}
}
Он удаляет не используемые функции, это не тот случай?
Да, недавний гуглеж показал, что из-за тришейкинга он удалил ненужные export (т. к. import он не нашел). Поведение правильное, но мне нужно обязательно скомпилировать этот код. Для этого я добавил секцию: optimization: { usedExports: false } Но в итоге функция handler() всё равно нормально не экспортируется. Она должна запускаться по команде до и после компиляции: node -e "const kek = require('./incomesandexpensesrate.js'); kek.handler()" Вебпак же ломает такое поведение, и выходит ошибка: TypeError: kek.handler is not a function
У меня такое ощущение что вы собираете какой-то тайпскриптовый скрипт без картинок шрифтов стилей и вот это всего, я угадал?
Я собираю функцию для serverless решения. Вот код, который работает: module.exports = { handler: (event, context) => { return 5 } }; Webpack должен скомпилировать код из кучи TS-файлов в эту функцию
а можете дать ts файл из которого это должно получится?
Ну, например: const.model.ts: export enum EConst { COUNT = 5 } main.ts: module.exports = { handler: (event: never, context: any): EConst => { return EConst.COUNT } }; Это от балды написано, но должно работать. В итоге должен скомпилиться кусок кода, который приведет мной в сообщении выше
первая проблема в том что это не тайпскрипт, в нем нету module.exports
ну так ты ж для ноды собираешь этот код https://t.me/webpack_ru/84943
Да. Для Ноды 10. А она только CommonJS или AMD ест, а ES модули не
Обсуждают сегодня