Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[help] Transforming files is not supported in browsers from @babel/core tranformFileSync #4863

Open
fionaInBits opened this issue Feb 17, 2023 · 0 comments

Comments

@fionaInBits
Copy link

fionaInBits commented Feb 17, 2023

I'm developing a tool that can output a dependency tree of program with @babel/core, in development mode, it runs well

"dev": "node -r ts-node/register src/index.ts"
but after building by rollup, the output runs with error.

source code

import { transformFileSync } from '@babel/core';
try {
      res = transformFileSync(fullPath, TRANSFORM_OPTIONS);
      log('路由AST:', res?.ast);
    } catch (e) {
      console.log('error when transformFileSync', e)
    } 

got error

error when transformFileSync Error: Transforming files is not supported in browsers
    at Object.transformFileSync (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:64137:11)
    at /Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:65013:26
    at Array.forEach (<anonymous>)
    at buildRoutes (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:65005:72)
    at _callee$ (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:70470:24)
    at tryCatch (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:69:19)
    at Generator.<anonymous> (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:150:24)
    at Generator.next (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:94:23)
    at asyncGeneratorStep$1 (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:331:26)
    at _next (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:350:11)
/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:65022
      libExports$1((_res3 = res) === null || _res3 === void 0 ? void 0 : _res3.ast, {
      ^

TypeError: libExports$1 is not a function
    at /Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:65022:7
    at Array.forEach (<anonymous>)
    at buildRoutes (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:65005:72)
    at _callee$ (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:70470:24)
    at tryCatch (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:69:19)
    at Generator.<anonymous> (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:150:24)
    at Generator.next (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:94:23)
    at asyncGeneratorStep$1 (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:331:26)
    at _next (/Users/liangfangfang/Projects/dependency-analysis/dist/node/index.cjs:350:11)

rollup.config.js

import { babel } from '@rollup/plugin-babel'
import commonjs from '@rollup/plugin-commonjs'
import json from "@rollup/plugin-json"
import resolve, { nodeResolve } from '@rollup/plugin-node-resolve'
// import replace from '@rollup/plugin-replace'
// import uglify from 'rollup-plugin-uglify'
// import shebang from 'rollup-plugin-shebang-bin'

const extensions = ['.js', '.jsx', '.ts', '.tsx', '.vue']
export default {
  input: './src/index.ts', // 入口文件
  output: {
    file: './dist/node/index.cjs', // 出口文件
    name: 'index', // 出口文件
    format: 'cjs' // 输出的模块语法格式
  },
  plugins: [
    babel({ 
      babelHelpers: 'bundled',
      exclude: 'node_modules/**',
      extensions,
      presets: [
      '@babel/preset-env',
      '@babel/preset-typescript'
      ],
  }),
    commonjs(),
    resolve({
        mainFields: ['module', 'main', 'jsnext:main', 'browser'],
        extensions,
        customResolveOptions: {
          moduleDirectories: ['node_modules']
        }
    }),
    nodeResolve({
        exclude: 'node_modules/**',
    }),
    json(),
    // replace({
    //   "const shebang = '#!/usr/bin/env node'": JSON.stringify('#!/usr/bin/env node')
    // })
    // uglify.uglify()
    // shebang(),
]
}

related issue: #4861

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant