# Supported platforms

# NodeJS

TypeORM was tested on Node.js version 14 and above.

# Browser

You can use sql.js (opens new window) in the browser.

# Webpack configuration

In the browser folder the package also includes a version compiled as a ES2015 module. If you want to use a different loader this is the point to start. Prior to TypeORM 0.1.7, the package is setup in a way that loaders like webpack will automatically use the browser folder. With 0.1.7 this was dropped to support Webpack usage in Node.js projects. This means, that the NormalModuleReplacementPlugin has to be used to insure that the correct version is loaded for browser projects. The configuration in your webpack config file, for this plugin looks like this:

plugins: [
    ..., // any existing plugins that you already have
    new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) {
        result.request = result.request.replace(/typeorm/, "typeorm/browser");
    }),
    new webpack.ProvidePlugin({
      'window.SQL': 'sql.js/dist/sql-wasm.js'
    })
]
1
2
3
4
5
6
7
8
9

and make sure sql-wasm.wasm file (opens new window) exists in your public path.

# Example of configuration

new DataSource({
    type: "sqljs",
    entities: [Photo],
    synchronize: true,
})
1
2
3
4
5

# Don't forget to include reflect-metadata

In your main html page, you need to include reflect-metadata:

<script src="./node_modules/reflect-metadata/Reflect.js"></script>
1

# Cordova / PhoneGap / Ionic apps

TypeORM is able to run on Cordova, PhoneGap, Ionic apps using the cordova-sqlite-storage (opens new window) plugin You have the option to choose between module loaders just like in browser package. For an example how to use TypeORM in Cordova see typeorm/cordova-example (opens new window) and for Ionic see typeorm/ionic-example (opens new window). Important: For use with Ionic, a custom webpack config file is needed! Please checkout the example to see the needed changes.

# React Native

TypeORM is able to run on React Native apps using the react-native-sqlite-storage (opens new window) plugin. For an example see typeorm/react-native-example (opens new window).

# Expo

TypeORM is able to run on Expo apps using the Expo SQLite API (opens new window). For an example how to use TypeORM in Expo see typeorm/expo-example (opens new window).

# NativeScript

  1. tns install webpack (read below why webpack is required)

  2. tns plugin add nativescript-sqlite

  3. Create a DataSource in your app's entry point

    import driver from "nativescript-sqlite"
    
    const dataSource = new DataSource({
        database: "test.db",
        type: "nativescript",
        driver,
        entities: [
            Todo, //... whatever entities you have
        ],
        logging: true,
    })
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

Note: This works only with NativeScript 4.x and above

When using with NativeScript, using webpack is compulsory. The typeorm/browser package is raw ES7 code with import/export which will NOT run as it is. It has to be bundled. Please use the tns run --bundle method

Checkout example here (opens new window)!