Далее JS - Пользовательский сервер с Typescript и Loda sh -es - PullRequest
0 голосов
/ 01 апреля 2020

Я установил следующий js с пользовательским сервером, express и машинопись и nodemon. Все работает нормально. Проблема в том, когда я пытаюсь использовать loda sh -es.

Приведенный ниже пример взят из другого аналогичного шаблона (https://github.com/pankod/next-boilerplate), который работает без проблем.

Но при попытке использовать loda sh -es,

server / index.ts

import { map } from "lodash-es";
console.log(map(["data", "saas", "asdas"], s => s.toUpperCase()));

я получаю эту ошибку

C:\Test\next-boilerplate-master\next-boilerplate-master\node_modules\lodash-es\lodash.js:10
    export { default as add } from './add.js';
    ^^^^^^

    SyntaxError: Unexpected token 'export'
        at Module._compile (internal/modules/cjs/loader.js:892:18)
        at Module._extensions..js (internal/modules/cjs/loader.js:973:10)
        at Object.require.extensions.<computed> [as .js] (C:\Test\next-boilerplate-master\next-boilerplate-master\node_modules\ts-node\src\index.ts:830:44)
        at Module.load (internal/modules/cjs/loader.js:812:32)
        at Function.Module._load (internal/modules/cjs/loader.js:724:14)
        at Module.require (internal/modules/cjs/loader.js:849:19)
        at require (internal/modules/cjs/helpers.js:74:18)
        at Object.<anonymous> (C:\Test\next-boilerplate-master\next-boilerplate-master\server\i18n.ts:5:1)
        at Module._compile (internal/modules/cjs/loader.js:956:30)
        at Module.m._compile (C:\Test\next-boilerplate-master\next-boilerplate-master\node_modules\ts-node\src\index.ts:837:23)

Я попытался добавить Модули next-transpile (https://github.com/zeit/next.js/issues/2259).

next.config. js

    // next.config.js
    const withPlugins = require("next-compose-plugins");
    const withCSS = require("@zeit/next-css");
    const withSass = require("@zeit/next-sass");
    const withBundleAnalyzer = require("@zeit/next-bundle-analyzer");
    const nextRuntimeDotenv = require("next-runtime-dotenv");
    const withTM = require("next-transpile-modules");

    const withConfig = nextRuntimeDotenv({ public: ["API_URL", "API_KEY"] });

    const nextConfig = {
        analyzeServer: ["server", "both"].includes(process.env.BUNDLE_ANALYZE),
        analyzeBrowser: ["browser", "both"].includes(process.env.BUNDLE_ANALYZE),
        bundleAnalyzerConfig: {
            server: {
                analyzerMode: "static",
                reportFilename: "../bundles/server.html",
            },
            browser: {
                analyzerMode: "static",
                reportFilename: "../bundles/client.html",
            },
        },
        publicRuntimeConfig: {
            PROXY_MODE: process.env.PROXY_MODE,
            API_URL: process.env.API_URL,
            API_KEY: process.env.API_KEY,
            STATIC_PATH: process.env.STATIC_PATH,
        },
    };

module.exports = withConfig(
    withPlugins(
        [
            [withTM, { transpileModules: ["lodash-es"] }],
            [withCSS],
            [withSass],
            [withBundleAnalyzer],
        ],
        nextConfig
    )
);

Но проблема все еще возникает.

Любая помощь будет устаревшей.

Спасибо.

1 Ответ

0 голосов
/ 02 апреля 2020

Если у вас есть пользовательский сервер, вы отвечаете за «серверную» часть следующего, поэтому next-transpile-modules не работает.

Шаблон, который вы используете, используя ts-node, что означает, что вы можете ' t использовать node_module, использующий esm.

Просто установите lodash вместо lodash-es.

...