npm run "scriptname" выдает ошибку, если она не включает --watch - PullRequest
0 голосов
/ 18 октября 2019

У меня есть приложение React с запущенным Typescript, которое я внедряю в существующий сайт ASP.NET. Попытка настроить env. переменные, но как только я это реализовал, я продолжаю получать сообщение об ошибке.

Я попытался выполнить несколько поисков в Google, но не могу найти кого-то, кто сталкивался с той же проблемой, что и я 'у меня есть.

У меня есть эти сценарии в моем файле package.json:

"scripts": {
    "build": "webpack --env.ENVIRONMENT=production -p --progress --config webpack.config.js",
    "dev-build": "webpack --env.ENVIRONMENT=development -p --progress --config webpack.config.js",
    "test-build": "webpack --env.ENVIRONMENT=test -p --progress --config webpack.config.js",
    "start": "webpack --env.ENVIRONMENT=development -d --progress --config webpack.config.js --watch",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

, а затем у меня есть этот webpack.config.js:

const webpack = require('webpack');
const dotenv = require('dotenv');
const fs = require('fs'); // Check if the file exists
const path = require('path'); // Get the current path

module.exports = (env) => {
    // Get the root path
    const currentPath = path.join(__dirname);

    // Create the fallback path (the production .env)
    const basePath = currentPath + '/.env';

    const envPath = basePath + '.' + env.ENVIRONMENT;

    // Check if the file exists, otherwise fall back to the production .env
    const finalPath = fs.existsSync(envPath) ? envPath : basePath;

    // Set the path parameter in the dotenv config
    const fileEnv = dotenv.config({ path: finalPath }).parsed;

    // reduce it to a nice object
    const envKeys = Object.keys(fileEnv).reduce((prev, next) => {
      prev[`process.env.${next}`] = JSON.stringify(fileEnv[next]);
      return prev;
    }, {});

    return {
      plugins: [
        new webpack.DefinePlugin(envKeys)
      ],
    devtool: "source-map",          // Enable sourcemaps for debugging webpack's output
    entry: __dirname + "/app",      // Entry point, where webpack starts to run
    mode: "production",
    module: {
        rules: [
            {
                test: /\.(t|j)sx?$/,
                exclude: /node_modules/,
                use: [
                    {
                        loader: "awesome-typescript-loader"
                    }
                ]
            },
            // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
            {
                enforce: "pre",
                test: /\.js$/,
                loader: "source-map-loader"
            }
        ]
    },
    output: {
        path: __dirname + '/dist',
        filename: 'bundle.js',
    },
    resolve: {
        // Add '.ts', '.tsx', '.js' and '.jsx' as resolvable extensions.
        extensions: [".ts", ".tsx", ".js", ".jsx"]
    },
    };
}

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

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! react_implementation@1.0.0 test-build: `webpack --env.ENVIRONMENT=test -p --progress --config webpack.config.js`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the react_implementation@1.0.0 test-build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Это происходит всякий раз, когда я выполняю npm run build или любую другую команду, но когда я добавляю --watch в конец скрипта, он запускаетсябез ошибок. Я застрял в том, что вызывает эту проблему.

Все еще немного новичок в использовании веб-пакета, но было бы неплохо иметь возможность запускать различные сценарии без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...